你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios7編寫自定義類2——Start Developing iOS Apps Today——從今天開始開發IOS(IOS7版)系列源文檔翻譯(十八)

ios7編寫自定義類2——Start Developing iOS Apps Today——從今天開始開發IOS(IOS7版)系列源文檔翻譯(十八)

編輯:IOS開發綜合

方法定義對象的行為

方法定義了一個對象可以做。一種方法是一段代碼,你要定義在一個類中執行任務或子程序。方法可以訪問存儲在類數據,並且可以使用該信息來執行某種操作。
例如,給一個待辦事項(XYZToDoItem)的能力得到標記為已完成,你可以添加一個markAsCompleted方法的類的接口。稍後,您將在類實現實現此方法的行為,如實施辦法描述。
@interface XYZToDoItem : NSObject
 
@property NSString *itemName;
@property BOOL completed;
@property (readonly) NSDate *creationDate;
- (void)markAsCompleted;
 
@end

減號( - )在方法名的前面表明它是一個實例方法,它可以被稱作該類的一個對象。這個減號的類的方法,這是表示用加號(+)區分開來。類方法可以調用類本身。類方法的一個常見例子是類的工廠方法,你在與Fundation了解。您還可以使用類的方法來訪問一些片與類相關聯的共享信息。
void關鍵字用於在括號在聲明的開頭,表明該方法沒有返回值。在這種情況下,markAsCompleted方法需要在沒有參數。參數在方法參數中更詳細地討論。

方法參數

你與聲明參數的方法來傳遞一些信息,當你調用一個方法。
舉例來說,你可以從上面的代碼片段修改markAsCompleted方法采取在一個單一的參數,將決定該項目是否被標記為已完成或未完成的。通過這種方式,你可以切換,而不是將它設置為只完成了該項目的完成狀態。
@interface XYZToDoItem : NSObject
 
@property NSString *itemName;
@property BOOL completed;
@property (readonly) NSDate *creationDate;
- (void)markAsCompleted:(BOOL)isComplete;
 
@end
現在,你的方法接受一個參數:isComplete,BOOL類型。
當你引用一個方法參數的名字,你在冒號作為方法名稱的一部分,所以更新的方法的名稱現在??markAsCompleted:。如果一個方法有多個參數,方法名被分解並穿插的參數名稱。如果你想另一個參數添加到這個方法,它的聲明是這樣的:
- (void)markAsCompleted:(BOOL)isComplete onDate:(NSDate *)date;
這裡,所述方法的名稱寫為markAsCompleted:onDate:。該名在isComplete和日期用在實施訪問時調用該方法,因為如果這些名字分別為變量提供的值。

實現方法

方法實現使用大括號來包含相關的代碼。該方法的名稱必須與它在接口文件對應,參數和返回類型必須完全匹配。
下面是一個簡單實現markAsCompleted的:您添加到您的XYZToDoItem類接口的方法:
@implementation XYZToDoItem
- (void)markAsCompleted:(BOOL)isComplete {
    self.completed = isComplete;
}
@end
就像屬性,方法可以是私有或公共。公共方法在公共接口中聲明,所以可以看到,並呼吁通過其他對象。其相應的執行駐留在實現文件中,並且不能被其他對象可見。私有方法只有一個執行,是內部的類,這意味著他們只對類實現的內部調用。這是一個強大的機制,增加內部行為的一類,而不允許其他對象訪問到它。
例如,假設你要保留一個待辦事項的completionDate更新。如果待辦事項被標記為已完成,設置completionDate為當前日期。如果它被標記為未完成, completionDate設置為nil ,因為它尚未完成。因為更新待辦項目的completionDate是一個自包含的任務,最好的做法是寫自己的方法吧。然而,重要的是要確保其他對象不能調用此方法,否則,另一個對象可以設置待辦事項的completionDate任何東西在任何時候。出於這個原因,你讓這個方法私有。
現在,更新XYZToDoItem的實現,包括私有方法setCompletionDate是被調用裡面markAsCompleted :更新待辦事項的completionDate每當它被標記為已完成或未完成的。請注意,你不添加任何的接口文件,因為你不希望其他對象,看看這個方法。
@implementation XYZToDoItem
- (void)markAsCompleted:(BOOL)isComplete {
    self.completed = isComplete;
    [self setCompletionDate];
}
- (void)setCompletionDate {
    if (self.completed) {
        self.completionDate = [NSDate date];
    } else {
        self.completionDate = nil;
    }
}
@end

此時,您已經定義使用XYZToDoItem類的to-do列表項的基本表示。 XYZToDoItem存儲有關其自身的名稱,創建日期,完成國有物業形式的信息,它定義了它能做什麼,得到標記為已完成或尚未完成的,使用的方法。這是你需要完成實施,在未來的教程你的todolist的應用程序功能的程度。但是,您可以通過添加自己的屬性和方法的類來整合新的行為到你的應用程序總是嘗試。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved