Mam następujący wiersz kodu w mojej aplikacji w systemie Mac OS X:NSLog dając mi ostrzeżenia, które nie może być naprawiona
NSLog(@"number of items: %ld", [urlArray count]);
I dostać ostrzeżenie: „Format określa typ«długi», ale argument ma typ 'NSUInteger' (aka 'unsigned int')”
jednak jeśli zmienię mojego kodu:
NSLog(@"number of items: %u", [urlArray count]);
pojawia się ostrzeżenie:
Format określa typ 'unsigned int', ale argument ma typ 'NSUInteger' (aka 'unsigned long')
Więc ja go zmienić na
NSLog(@"number of items: %u", [urlArray count]);
ale pojawia się ostrzeżenie: Format Określa wpisz "unsigned long", ale argument ma typ "NSUInteger" (inaczej "unsigned int").
Jak mogę skonfigurować mój dziennik NSLog tak, aby nie generował ostrzeżenia? Jeśli podążam za sugestiami Xcode, po prostu wpadam w niekończącą się pętlę zmiany specyfikacji formatu, ale ostrzeżenia nigdy nie znikają.
To wydaje się raczej zbędne ale czyści się ostrzeżenia. – Jackson
Nie jesteś pewien, czy to robi różnicę, ale powinieneś prawdopodobnie przypominać ten sam typ, co specyfikator formatu. Tak więc (unsigned long) byłby% lu, lub (long) byłby% ld –
@darren to robi różnicę, nie robiąc tego to niezdefiniowane zachowanie. –