ios7編寫自訂類2——Start Developing iOS Apps Today——從今天開始開發IOS(IOS

來源:互聯網
上載者:User

方法定義對象的行為方法定義了一個對象可以做。一種方法是一段代碼,你要定義在一個類中執行任務或子程式。方法可以訪問儲存在類資料,並且可以使用該資訊來執行某種操作。
例如,給一個待辦事項(XYZToDoItem)的能力得到標記為已完成,你可以添加一個markAsCompleted方法的類的介面。稍後,您將在類實現實現此方法的行為,如實施辦法描述。

@interface XYZToDoItem : NSObject @property NSString *itemName;@property BOOL completed;@property (readonly) NSDate *creationDate;- (void)markAsCompleted; @end

減號( - )在方法名的前面表明它是一個執行個體方法,它可以被稱作該類的一個對象。這個減號的類的方法,這是表示用加號(+)區分開來。類方法可以調用類本身。類方法的一個常見例子是類的Factory 方法,你在與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的應用程式功能的程度。但是,您可以通過添加自己的屬性和方法的類來整合新的行為到你的應用程式總是嘗試。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.