ManageAddressBook.mというファイルがあります。このファイルには2つの@implementationが含まれています
2番目はどういう意味ですか?
@implementation ManageAddressBook
@end
@implementation NSString (Additions)
@end
ManageAddressBook.mというファイルがあります。このファイルには2つの@implementationが含まれています
2番目はどういう意味ですか?
@implementation ManageAddressBook
@end
@implementation NSString (Additions)
@end
最初の実装は単なる新しいクラスです。2番目の実装は、基本的に、Categoriesと呼ばれる既存のクラスへの拡張メソッドです。詳細については、「カテゴリと拡張機能」の記事を参照してください。
リンクの上部に要約されているように:
カテゴリを使用すると、ソースがないクラスであっても、既存のクラスにメソッドを追加できます。カテゴリは、サブクラス化せずに既存のクラスの機能を拡張できる強力な機能です。カテゴリを使用して、独自のクラスの実装を複数のファイルに分散することもできます。クラス拡張は似ていますが、プライマリクラスの@interfaceブロック内以外の場所にあるクラスに対して追加の必須APIを宣言できます。
2つ目は、にObjective-Cカテゴリを実装しNSString
ます。つまり、で動作するが、クラスNSString
の作成者によって提供されないメソッドです。NSString
カテゴリを追加すると、C#の拡張メソッドにいくらか似た方法でクラスの機能を拡張できます。オブジェクトはカテゴリで定義されたメッセージに応答し始めるため、柔軟でモジュール式の方法で機能を記述できます。