Iphone 在respondsToSelector if语句之后对类型id调用方法时出现警告
我相当肯定这是一个简单的问题,但这是我一直无法解决的问题 我在if语句中使用Iphone 在respondsToSelector if语句之后对类型id调用方法时出现警告,iphone,ios4,delegates,iphone-sdk-3.0,selector,Iphone,Ios4,Delegates,Iphone Sdk 3.0,Selector,我相当肯定这是一个简单的问题,但这是我一直无法解决的问题 我在if语句中使用respondsToSelector方法来检查委托是否实现了方法。在if语句中,我调用这个选择器。没什么复杂的。但是我收到一条警告说找不到该方法,()。但是,如果我包含实现该方法的类的头文件,警告就会消失 我怀疑这可能与源代码的编译顺序有关 非常感谢您的帮助。如果您想在id数据类型后面隐藏真正的类,请编写一些协议,然后在ivars中定义委托,并指定它实现该协议的内容 id<someProtocol> _del
respondsToSelector
方法来检查委托是否实现了方法。在if语句中,我调用这个选择器。没什么复杂的。但是我收到一条警告说找不到该方法,()。但是,如果我包含实现该方法的类的头文件,警告就会消失
我怀疑这可能与源代码的编译顺序有关
非常感谢您的帮助。如果您想在id数据类型后面隐藏真正的类,请编写一些协议,然后在ivars中定义委托,并指定它实现该协议的内容
id<someProtocol> _delegate;
id\u代表;
确保已在协议中声明了方法。尽管可以使用@selector(somethingHere:)
创建任意选择器,但在没有编译器警告的情况下,不能对id
变量调用任意方法。编译器仍将检查您正在调用的方法/选择器是否已在类或类别的某个位置定义
id<someProtocol> _delegate;
您需要包含适当的头,以便编译器知道系统中存在可以响应该方法的对象/类,否则您可能会键入错误的选择器,并且永远不会知道它
编辑:
好的,我现在看到您正在实现一个委托。在这种情况下,您需要使用适当的方法声明协议,并为您的代理使用类型id
。然后您的类应该声明为实现该协议
id<someProtocol> _delegate;