有三种协议实现:
第一个:
@protocol FirstProtocol
...
@end
@property(nonatomic, weak) id<FirstProtocol> delegate;
第二个:
@protocol SecondProtocol<NSObject>
...
@end
@property(nonatomic, weak) id<FirstProtocol> delegate;
第三个:
@protocol SecondProtocol
...
@end
@property(nonatomic, weak) NSObject<FirstProtocol> *delegate;
我只知道“<NSObject>
或NSObject<protocol>
”可以让委托调用NSObject选择器。
但我不知道它们之间有什么区别。哪一个是最好的实践。
答案 0 :(得分:1)
您声称可以在delegate
上调用哪些方法。
在id<FirstProtocol>
中,唯一受支持的方法是FirstProtocol
中指定的方法。
在id<SecondProtocol>
中,支持的方法是SecondProtocol
和NSObject
protocol中指定的方法。这样,您就可以访问-class
,-superclass
,-isEqual:
,-hash
,-self
以及NSObject
协议中的所有其他方法。< / p>
在NSObject<FirstProtocol>
中,对象必须是NSObject
种类。它可以访问-copy
,-mutableCopy
以及取决于NSObject
类的所有其他内容。