要求传入客观C方法的对象符合协议?
问题描述:
这可能吗?例如,我有一个带有init方法的TriangleDataView类。目前,该方法声明如下:要求传入客观C方法的对象符合协议?
- (id)initWithFrame:(CGRect)frame delegate: (id) delegateObject;
我想要求delegateObject符合UITextFieldDelegate协议。但是那是什么语法?
答
- (id)initWithFrame:(CGRect)frame delegate:(id<UITextFieldDelegate>)delegateObject;
+1:但是,我相信这只是一个警告。如果他真的想检查他可以添加'if(![delegateObject conformsToProtocol:@protocol(UITextFieldDelegate)])'并引发异常。也许你可以添加一个更完整的答案? – sdolan 2010-07-18 02:18:56
@sdolan,更好的答案是 - 错误(将警告视为错误)。 ObjC在很大程度上依赖于正确编码的警告,你永远不应该忽视它们。 – 2010-07-18 03:34:40
@Rob Napier:谢谢,我不知道那面旗帜(尽管我在实践中做了同样的事情)。我建议的唯一好处是,如果您将代码分发给没有该标志的其他开发人员,请勿修复警告,并且无法调试由于在几秒钟内未实现协议而导致的“doesNotRespondToSelector”异常。 – sdolan 2010-07-18 04:25:12