私は、iOS SDKのサンプルコードでは、次の方法が見つかりました:(プライベート)の手段を何@interface DITableViewController(プライベート)とは何を意味しますか?
@interface DITableViewController (private)
- (NSString *)applicationDocumentsDirectory;
@end
を? Objective-C 2.0(Appleが開発した)の新しい構文ですか?
私は、iOS SDKのサンプルコードでは、次の方法が見つかりました:(プライベート)の手段を何@interface DITableViewController(プライベート)とは何を意味しますか?
@interface DITableViewController (private)
- (NSString *)applicationDocumentsDirectory;
@end
を? Objective-C 2.0(Appleが開発した)の新しい構文ですか?
:-)事前に
おかげでそれはちょうどcategoryです。構文はObjC 1.0にも存在します。 「プライベート」は、「私的使用のみ」を意味するカテゴリの名前です。これはキーワードではありません。
このカテゴリを定義すると、DITableViewControllerクラス自体を変更せずに、DITableViewControllerのインスタンスにメッセージ-applicationDocumentsDirectory
も送信できます。
ObjC 2.0では、プライベートな使用を目的としたカテゴリにクラス拡張を使用する方がよい場合があります。
@interface DITableViewController()
- (NSString *)applicationDocumentsDirectory;
@end
(リンク答えははるかに詳細を提供します。)
構文(category)
は、サブクラス化の代替として使用されています。 NSString
のような標準クラスでも、メソッドをクラスに追加する手段を提供します。
http://macdevelopertips.com/objective-c/objective-c-categories.html
あなたは拡張しているクラスについて言及していますが、それが起こるかどうかに関わらず、既存のメソッドをカテゴリメソッドで置き換えることはできません。 – Richard
1クラスの拡張(別名匿名カテゴリ)を言及ため。 – BoltClock