2013-01-16 131 views
7

在iOS上NSUIntegerunsigned int,在OSX上它是unsigned long。我怎樣才能做出這樣的打印聲明在iOS和OSX上無符號整數和無符號長整數編譯NSLog

NSLog(@"Array has %d elements.",[array count]); 

編譯在兩個平臺上沒有警告?我當然可以使用#ifdef #else #endif結構,但會添加4行代碼。我也可以將返回值轉換爲unsigned int。有一個更短的解決方案嗎?

回答

15

對於兩者中的較大者來說如何?

NSLog(@"Array has %ld elements.",(unsigned long)[array count]); 

在iOS中沒有任何警告,我認爲這是OSX中沒有任何操作。

+3

最好的辦法就是'的NSLog(@ 「%錄」,(無符號長)array.count);''爲NSUInteger'和'的NSLog(@ 「%LD」,(長)button.tag );''NSInteger'':32位或64位無警告。 – NSGod

-1

如何鑄造到更大的兩個?

NSLog(@"Array has %ld elements.",(unsigned long)[array count]); 
No warning in iOS, and I think it's a no-op in OSX.