如何在Xcode中绕过不正确的警告?

时间:2012-01-15 18:15:03

标签: objective-c xcode4.2

我收到以下警告:

Instance method 'method name' not found (return type defaults to 'id')

调用此代码时:

@protocol SomeProtocol <NSObject> {
    @property (nonatomic, retain) SpecificClassName* someDelegate;
}
...
+ (void) aMethod : (id <SomeProtocol>) object {
    [object.someDelegate doSomeThing]; // warning statement show up here
}

我觉得这是编译器在这一点上的一个短暂的来临,但这可能是调用水壶黑的锅...有没有人对此有任何反馈?

2 个答案:

答案 0 :(得分:1)

在您的实施(#import文件)中,您需要SpecificClassName .m的标头文件。

如果您要在头文件中使用类型名SpecificClassName,前向声明@class SpecificClassName将会执行,但是在类上调用方法需要编译器知道返回类型方法。

如果要在SpecificClassName的实例上调用方法,请包含其定义的标题。

答案 1 :(得分:0)

我的意思是该类的头文件不包含方法签名。所以编译器无法判断该方法是否实际存在。修复头文件以消除警告。

在Java或C ++中,这将是编译失败。那是因为它们在编译时进行方法绑定,因此编译器需要查找方法。 Objective-C在运行时完成;它向对象发送一个方法调用,该对象可能有也可能没有这样的方法。