2

Objective-C では、次のコードは警告なしでコンパイルされます。

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

次のコードは、ポインター割り当ての警告でコンパイルされます。

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

ほとんどのinitおよび factory メソッドがidを返すようにすることは、Cocoa 開発者の間で非常に一般的な方法であるため、前者のシナリオは非常に簡単に発生します。

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

実際のシナリオについては、iOS 用の Cocos2D を参照できます。

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

m必要なものを取得するには、YESにする必要があるという特定の警告についてはよくわかりません。

于 2013-01-24T09:40:06.160 に答える