
示例代表(为了清楚起见,感谢ole!):
@protocol SomeDelegate <NSObject> - (voID)someDelegateMessage;@end
示例类别:
@interface NSObject (Somecategory) <SomeDelegate> - (voID)someDelegateMessage; @end
和其他典型的实现
@implement NSObject (Somecategory) - (voID)someDelegateMessage {}@end 当我真的尝试这个,我得到一个警告每个NSObject方法:
warning: incomplete implementation of category ‘Somecategory’
warning: method deFinition for ‘-description’ not found
…
warning: method deFinition for ‘-isEqual:’ not found
warning: category ‘Somecategory’ does not fully implement the ‘NSObject’ protocol
如果我移除< SomeDelegate>从声明,但当然NSObject不被识别为SomeDelegate
解决方法 解决方法是在没有实施的类别上声明协议,并在不同的类别中实施该方法,例如:@interface NSObject (Somecategory) <SomeDelegate> - (voID)someDelegateMessage; @end@implementation NSObject (Somecategory_Impl) - (voID)someDelegateMessage {}@end 如果这样做,NSObject将被认为符合< SomeDelegate>在编译时,对someDelegateMessage的运行时检查将成功。但是,conformstoprotocol:运行时检查将失败。
当然,你应该file a bug请求在核心类上声明的方法不会生成警告。
总结以上是内存溢出为你收集整理的objective-c – 一个类可以同时实现协议吗?全部内容,希望文章能够帮你解决objective-c – 一个类可以同时实现协议吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)