【问题标题】:About Delegate in objective-c?关于objective-c中的委托?
【发布时间】:2013-09-09 15:09:18
【问题描述】:
@protocol MyButtonViewDelegate <NSObject>
- (void)buttonView:(MyButtonView*)view buttonPressed:(UIButton*)button;
@end

我是 Objective-c 的新手,我正在根据本书学习 delegate

从书中,当我们定义协议时,我们只是这样写@protocol MyButtonViewDelegate

但是@protocol MyButtonViewDelegate@protocol MyButtonViewDelegate &lt;NSObject&gt; 之间有什么区别。为什么我们需要&lt;NSObject&gt;

【问题讨论】:

标签: objective-c


【解决方案1】:

但是@protocol MyButtonViewDelegate 之间有什么区别? 和@protocol MyButtonViewDelegate &lt;NSObject&gt;

&lt;NSObject&gt; 表示协议MyButtonViewDelegate 符合the NSObject protocol。也就是说,任何符合MyButtonViewDelegate 协议的对象也必须符合NSObject 协议。 (你可能没有意识到,但是有一个名为NSObject 的协议以及一个同名的类。)所以,如果你有一个符合MyButtonViewDelegate 的对象,那么调用像@ 这样的方法是安全的987654331@、-isEqual:-retain-release-isKindOfClass:

您可能遇到的每个对象都已经符合NSObject,因为NSObject 类符合协议NSObject。您可能遇到的唯一其他 Objective-C 基类是 NSProxy,它也符合 NSObject。因此,将&lt;NSObject&gt; 添加到您的协议中可能不会产生真正的影响,但这是明确要求的好方法。

【讨论】:

  • 我明白了。协议MyButtonViewDelegate 继承协议NSObject。我只是认为NSObject是一个类,但我错了,它也是一个协议。
  • @BlackMamba 有一个类一个名为NSObject 的协议。该协议声明了一组方法,每个对象,即使是那些不是从NSObject 类派生的对象,都应该实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多