2013-01-16 23 views
7

iOS NSUInteger'da unsigned int, OSX'de unsigned long şeklindedir. NasılNSLog'u imzasız int ve imzasız uzun ile iOS ve OSX üzerinde uyarısı olmadan uyar

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

gibi bir yazdırma deyimi bir uyarı olmadan her iki platformda da derleme yapabilir? Tabii ki bir #ifdef #else #endif yapısını kullanabilirim ama bu 4 satır kod ekleyecektir. Dönüş değerini imzasız int'ye de atabilirim. Daha kısa bir çözüm var mı?

cevap

15

İki taneden daha büyük bir oyuncuya ne dersiniz?

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

iOS'ta uyarı yok ve bunun OSX'de bir op-op olduğunu düşünüyorum.

+3

en iyi yolu '("% lu" @, (işaretsiz uzun) array.count) NSLog olduğu) “' NSInteger' için: 32 bit veya 64 bit'de uyarı yok. – NSGod

-1

Bu ikiden daha büyük olanlara ne dersiniz? "% Ld" @ NSUInteger` `için` ve `NSLog ((uzun) button.tag;

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