7

Mac OS X アプリケーションに次のコード行があります。

NSLog(@"number of items: %ld", [urlArray count]);

そして、次の警告が表示されます。

ただし、コードを次のように変更すると:

NSLog(@"number of items: %u", [urlArray count]);

警告が表示されます:

形式は「unsigned int」型を指定していますが、引数の型は「NSUInteger」(別名「unsigned long」) です。

だから私はそれを

NSLog(@"number of items: %u", [urlArray count]);

しかし、私は警告を受け取ります:フォーマットはタイプ「unsigned long」を指定していますが、引数にはタイプ「NSUInteger」(別名「unsigned int」)があります

警告が生成されないように NSLog を設定するにはどうすればよいですか? Xcodeの提案に従うと、フォーマット指定子を変更する無限ループに陥りますが、警告は消えません。

4

3 に答える 3

14

ええ、これは迷惑です。それは私が信じている32/64ビットのものです。最も簡単な方法は、単純に long にキャストすることです:

NSLog(@"number of items: %lu", (unsigned long)[urlArray count]);
于 2012-11-13T06:32:20.280 に答える
6

ユニバーサル アプリケーションの移植性ガイドでは、この場合のキャストを提案しています。

NSLog(@"number of items: %ld", (unsigned long)[urlArray count]);
于 2012-11-13T06:32:26.223 に答える