@protocol MyButtonViewDelegate <NSObject>
- (void)buttonView:(MyButtonView*)view buttonPressed:(UIButton*)button;
@end
我是objective-c的新手,我正在根据这本书学习delegate
。
@protocol MyButtonViewDelegate
。
但是@protocol MyButtonViewDelegate
和@protocol MyButtonViewDelegate <NSObject>
之间的区别是什么。我们为什么需要<NSObject>
?
答案 0 :(得分:6)
但
@protocol MyButtonViewDelegate
之间的区别是什么? 和@protocol MyButtonViewDelegate <NSObject>
。
<NSObject>
表示协议MyButtonViewDelegate
符合the NSObject
protocol。也就是说,符合MyButtonViewDelegate
协议的任何对象也必须符合NSObject
协议。 (你可能没有意识到,但是有一个名为NSObject
的协议以及一个同名的类。)所以,如果你有一个符合{{1}的对象},可以安全地调用MyButtonViewDelegate
,-hash
,-isEqual:
,-retain
,-release
等方法。
您可能遇到的每个对象都已符合-isKindOfClass:
,因为类NSObject
符合协议NSObject
。您可能遇到的唯一其他Objective-C基类是NSObject
,它也符合NSProxy
。因此,在您的协议中添加NSObject
可能不会产生真正的影响,但这是明确要求的好方法。