1
#import <UIKit/UIKit.h>
@protocol myProtocol <NSObject>
-(void)aMethod;
@end
@interface ViewController : UIViewController
@property (weak) id<myProtocol> dSource;
@end
我想要牢牢抓住Obj-c协议,我正在读苹果doc去学习,很少有东西不清楚。以下是在点从DOC:需要协助理解objective-c协议
饼图视图类接口将需要一个属性来跟踪数据源对象的。 (上面的代码中,我们主要是申报协议这种方式,当我有协议,在我的类中声明为什么需要追踪被摄体,或协议可以在独立的类中定义?为此,我们需要跟踪对象?)
通过在属性上指定所需的协议一致性,如果您尝试将属性设置为不符合协议的对象,则会收到编译器警告。
如果您尝试调用上面定义的符合协议的id的respondsToSelector:方法,则会出现编译器错误,表明没有已知的实例方法。一旦你使用协议限定了一个id,所有的静态类型检查都会回来;如果您尝试调用未在指定协议中定义的任何方法,则会出现错误。避免编译器错误的一种方法是将自定义协议设置为采用NSObject协议。
感谢您的回复,在第1点我要求的主要是协议的编写方式就像在代码片段,所以当协议在我的课为什么要声明一个跟踪对象? –
它可以让你在课堂之外移动这个功能。例如。 UITableViewDatasource在UITableView头文件中声明,但在那里声明,所以你不必为了自定义它的功能而继承UITableView。 – wattson12
意思是我可以将协议声明为一个独立的头文件并使用跟踪对象。 –