我正在尝试编写一个自定义的正式协议,我遇到了Xcode警告的问题.特别:
if([self.delegate conformsToProtocol:@protocol(myProtocol)]){
[self.delegate myProtocolMethod];
}
Run Code Online (Sandbox Code Playgroud)
这在运行时完全正常,但Xcode一直给我"NSObject可能不响应-myProtocolMethod"警告.我真的想删除警告,所以我在这里做错了吗?
如果您刚刚检查了协议,编译器并不在意.它只关心您调用方法的对象的数据类型.最简单的方法是将结果self.delegate转换为声明协议的类型.
if([self.delegate conformsToProtocol:@protocol(myProtocol)]) {
[(NSObject * <myProtocol>)self.delegate myProtocolMethod];
}
Run Code Online (Sandbox Code Playgroud)
或者,如果委托属性应始终实现此协议,则可以更改属性声明以包含它.这甚至更好,因为如果您尝试将未实现协议的对象分配为委托,编译器将发出警告.
@property (modifiers) NSObject * <myProtocol> delegate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |