2012-11-13 50 views
7

我的代碼在我的Mac OS X應用程序下面一行:的NSLog給我這是不可能糾正的警告

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

我也得到了警告:「格式指定型‘長’但參數的類型爲'NSUInteger'(又名 '無符號整型')」

但是,如果我我的代碼更改爲:

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

我得到警告:

格式指定鍵入「無符號整型」,但參數的類型是「NSUInteger」(又名「無符號長」)

於是我將其更改爲

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

,但我得到警告: 格式指定鍵入'無符號長',但參數類型'NSUInteger'(又名'無符號整數')

我如何設置我的NSLog,因此它不會產生警告?如果我遵循Xcode的建議,我只能進入修改格式說明符的無限循環,但警告永遠不會消失。

回答

14

是的,這很煩人。我相信這是一個32/64位的東西。最容易做的事情是隻投給長:

NSLog(@"number of items: %lu", (unsigned long)[urlArray count]); 
6

portability guide普遍應用表明,在這種情況下鑄造。

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

這似乎相當不必要的,但它確實明確了警告。 – Jackson

+3

不知道它是否有所作爲,但應該與格式說明符相同。所以(無符號長)將是%lu,或者(長)將是%ld –

+0

@darren它確實有所作爲,不這樣做是未定義的行爲。 – 2012-11-13 06:35:35

相關問題