NSTextFieldDelegate 的声明让我非常困惑。
在Xcode中,我点击NSTextFieldDelegate的“跳转到定义”,然后找到:
@protocol NSTextFieldDelegate <NSControlTextEditingDelegate> @end
我知道如果我们添加&lt; ...&gt;在NSObject类型(例如“id”)声明之后的语法,这意味着此对象符合“&lt;&gt;”中指定的协议。
然而,Obj-C的书我没有提到“&lt;&gt;”时的意思意味着它遵循协议声明......
所以,问题1:“&lt;&gt;”是什么是指在宣布议定书之后?
我继续查看 NSControlTextEditingDelegate ,发现有几个方法以“control:...”开头。但最吸引我的是 NSControlTextEditingDelegate 定义上面的文字:
@interface NSObject(NSControlSubclassNotifications)
- (void)controlTextDidBeginEditing:(NSNotification *)obj;
- (void)controlTextDidEndEditing:(NSNotification *)obj;
- (void)controlTextDidChange:(NSNotification *)obj;
@end
哦,这里有新问题:
问题2:什么是syntex“NSObject(NSControlSubclassNotifications)”是什么意思?实际上 NSControlSubclassNotifications 是什么?
Quesiont 3: NSObject,NSControlSubclassNotifications和NSControlTextEditingDelegate之间有什么关系? apple doc简单地说:“NSTextFieldDelegate协议采用NSControlTextEditingDelegate协议,目前不会进一步扩展它。”但我无法理解它的意思......
答案 0 :(得分:1)
NSControlSubclassNotification
是NSObject
上的类别。它基本上为从NSObject
继承的所有类添加了新方法。 NSTextFieldDelegate
实际上与NSControlTextEditingDelegate
有效,只是名称不同,但未来可能会添加与NSControlTextEditingDelegate
无关的新方法,这可能就是为什么它被设计为一个单独的协议。