#import <UIKit/UIKit.h>
@protocol myProtocol <NSObject>
-(void)aMethod;
@end
@interface ViewController : UIViewController
@property (weak) id<myProtocol> dSource;
@end
我正试图牢牢掌握Obj-c协议,我正在阅读苹果doc进行研究,很少有事情我不清楚。以下是doc的要点:
饼图视图类接口需要一个属性来跟踪数据源对象。 (上面的代码,我们大多以这种方式声明协议,当我在我的类中声明协议为什么需要一个跟踪对象,或者协议可以在独立的类中定义?为此我们需要跟踪对象?)
通过在属性上指定所需的协议一致性,如果您尝试将该属性设置为不符合协议的对象,则会收到编译器警告。
如果您尝试在符合上面定义的协议的id上调用respondsToSelector:方法,您将收到一个编译器错误,即没有已知的实例方法。一旦使用协议限定id,所有静态类型检查都会返回;如果您尝试调用未在指定协议中定义的任何方法,您将收到错误。避免编译器错误的一种方法是将自定义协议设置为采用NSObject协议。
答案 0 :(得分:1)
NSObject
上的方法
协议,所以你可以让你的协议扩展NSObject
(标准),或者您可以将该财产声明为
NSObject的