2012-05-22 112 views
2

我有一個名爲ManageAddressBook.m 文件中的文件有兩個@implementation內這是什麼意思在Objective-C

是什麼,第二個是什麼意思?

@implementation ManageAddressBook 

@end 

@implementation NSString (Additions) 

@end 
+0

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html – Almo

+2

更可能的是,這是一個糟糕的設計指標。雖然類別很有用,但對現有類別的分類仍然存在不好的代碼味道。 – bbum

+0

可能重複[在@interface和@implementation指令中括號中的文本是什麼意思?](http://stackoverflow.com/questions/7378479/what-does-the-text-inside-parentheses-in-interface-和實現的directiv) –

回答

8

第一個實現只是一個新類。第二種實現基本上是對現有類的擴展方法,稱爲類別。請參閱文章:Categories and Extensions瞭解更多信息。

作爲總結在鏈路的頂部:

一個類別允許您添加方法到現有的類,甚至是一個你沒有來源。類別是一個強大的功能,它允許您在不使用子類的情況下擴展現有類的功能。使用類別,您還可以在多個文件中分發您自己的類的實現。類擴展類似,但允許在除了主類@interface塊之外的位置爲類聲明額外的必需API。

5

第二個實現一個Objective-C CategoryNSString,即,關於操作NSString,但不通過NSString類的作者提供的方法。

添加類別讓你的方式有點類似於C#的擴展方法擴展類的功能:對象開始響應於類別定義的消息,使得它方便你以靈活和模塊化的方式寫功能。