2

在 Objective-C 中,以下代码编译时没有警告:

id obj = [[NSObject alloc] init];
NSString *str = obj;
NSLog(@"%@", str);

虽然以下代码编译时带有指针分配警告:

NSObject *obj = [[NSObject alloc] init];
NSString *str = obj;
NSLog(@"%@", str);

由于 Cocoa 开发人员的常见做法是让大多数init和 factory 方法返回一个id,因此很容易出现前一种情况:

Mammal *animal = [Crocodile animalWithName:@"Croc"]; // Method animalWithName returns id.

对于现实世界的场景,我可以参考 Cocos2D for iOS:

CCFiniteTimeAction *walkAction = [CCRepeatForever actionWithAction: action]; // Method actionWithAction returns id.

我同意 CCRepeatForever 听起来不像 CCFiniteTimeAction(相反,它是 CCAction 的直接子类),但如果能从编译器那里得到一些帮助会很好。在这些情况下,程序员有没有办法让 Xcode 生成警告?

4

1 回答 1

0

改变你的build settings > apple llvm compiler 4.1 -warnings

我不确定您必须做出“是”才能获得您想要的东西的具体警告。

于 2013-01-24T09:40:06.160 回答