在Objective-C中,以下代码编译时没有警告:
id obj = [[NSObject alloc] init];
NSString *str = obj;
NSLog(@"%@", str);
以下代码使用指针赋值警告进行编译:
NSObject *obj = [[NSObject alloc] init];
NSString *str = obj;
NSLog(@"%@", str);
由于Cocoa开发人员通常会使大多数 init 和工厂方法返回 id ,因此前一种情况很容易出现:
Mammal *animal = [Crocodile animalWithName:@"Croc"]; // Method animalWithName returns id.
对于现实世界的场景,我可以参考适用于iOS的Cocos2D:
CCFiniteTimeAction *walkAction = [CCRepeatForever actionWithAction: action]; // Method actionWithAction returns id.
我同意CCRepeatForever听起来不像CCFiniteTimeAction(相反,它是CCAction的直接子类),但是从编译器获得一些帮助会很高兴。在这些情况下,程序员是否有办法让Xcode生成警告?
答案 0 :(得分:0)
更改您的build settings > apple llvm compiler 4.1 -warnings
我不确定您必须做出“是”才能得到您想要的具体警告。