我刚刚遇到Clang/LLVM today,并决定尝试一下。Clang在非常简单的类中生成警告“method”-init'not found“
我的系统是FreeBSD8.1-Release。 默认的系统编译器是GCC4.2.1,这是我一直使用到目前为止编译我的Objective-C项目。
我正在玩弄静态分析器,并想知道如何消除正在生成的警告之一。
MyClass.h
#import <objc/Object.h>
@interface MyClass: Object {
}
-(MyClass*) init;
@end
MyClass.m
#import "MyClass.h"
@implementation MyClass
-(MyClass*) init {
self = [super init];
if (self) {
// do stuff
}
return self;
}
@end
警告:
%clang --analyze MyClass.m
MyClass.m:7:9: warning: method '-init' not found (return type defaults to 'id')
self = [super init];
^~~~~~~~~~~~
1 diagnostic generated.
我认为分析器不知道如何确定超的类型(对象,在这种情况下)。有什么办法可以消除这个警告(除了通过抑制)吗?我看着铸造超级,但它看起来像是不允许的。
谢谢! 最大
更新
感谢Dave和bbum指着我在正确的方向为消除警告。现在我试图弄清楚为什么警告首先发生。
如果有人有任何想法或线索,我喜欢听到他们。
感谢, 最大
警告很简单,它告诉你'super'没有'init'方法。 – paulbailey 2011-03-14 08:57:28