在某些情况下,Objective-C扩展会生成“可能不响应警告”

时间:2010-12-31 09:59:39

标签: objective-c cocoa ios

代码使用单个警告构建,并生成预期输出“Hello,World!”

示例文件“TestClass.h”

#import <Cocoa/Cocoa.h>
@interface TestClass : NSObject {
}

- (void)foobar;
@end

示例文件“TestClass.m”

#import "TestClass.h"

@implementation TestClass
- (void)say {
    // Compiler output "warning: 'TestClass' may not respond to '-hello'"
    [self hello]; 
}

- (void)hello {
    NSLog(@"Hello, World!");
}

- (void)foobar {
    [self say];
}
@end

@interface TestClass ()
- (void)say;
- (void)hello;
@end

可以通过在@implementation部分中将“hello”方法置于“say”上方来避免编译器警告。但是依赖于你的方法的顺序是令人讨厌的。有没有办法绕过这个编译器警告,而不必按任何特定的顺序放置你的方法?

1 个答案:

答案 0 :(得分:7)

不,没有。的期间

编译器会自上而下地解析您的代码,所以请将您的私人@interface定义置于上面},这样你就可以了。< / p>