NSTextFieldDelegateの宣言は本当に私を混乱させます。
Xcode で、NSTextFieldDelegate の「定義にジャンプ」をクリックすると、以下が見つかりました。
@protocol NSTextFieldDelegate <NSControlTextEditingDelegate> @end
NSObject 型 ("id" など) の宣言の後に <...> 構文を追加すると、このオブジェクトが "<>" で指定されたプロトコルに準拠することを意味します。
ただし、私が持っている Obj-C の本では、「<>」がプロトコル宣言に続く場合の意味について言及していません...
では、質問 1:プロトコルの宣言の後の "<>" は何を意味しますか?
NSControlTextEditingDelegateを引き続き調べたところ、「control:...」で始まるメソッドがいくつか見つかりました。しかし、私が最も惹かれたのは、NSControlTextEditingDelegate定義の上のテキストでした。
@interface NSObject(NSControlSubclassNotifications)
- (void)controlTextDidBeginEditing:(NSNotification *)obj;
- (void)controlTextDidEndEditing:(NSNotification *)obj;
- (void)controlTextDidChange:(NSNotification *)obj;
@end
ああ、ここで新しい質問が来ます:
質問 2:シンテックス "NSObject(NSControlSubclassNotifications)" は何を意味しますか? NSControlSubclassNotificationsとは実際には何ですか?
質問 3: NSObject、NSControlSubclassNotifications、および NSControlTextEditingDelegate の間の関係は何ですか? アップルのドキュメントには、「NSTextFieldDelegate プロトコルは NSControlTextEditingDelegate プロトコルを採用しており、現在それ以上の拡張は行っていません」と簡単に書かれています。でも意味が分からなかった…