Testen auf Null in objective-c

7

Ich habe den folgenden Code in einer Schleife

%Vor%

gibt die folgenden Ausgaben

%Vor%

Ich verstehe den zweiten Fall nicht, in dem das Array images null ist. Warum wird dies in meinem Test nicht richtig erkannt? Wie kann ich ein solches Problem beheben?

    
madewulf 22.12.2011, 13:36
quelle

2 Antworten

19

<null> ist nicht nil . nil druckt (null) beim Drucken. Was Sie haben, ist ein NSNull . NSNull IST ein Objekt, es reagiert nur zu wenig. Es ist als Platzhalter für Sie verfügbar.

Um auf NSNull zu testen, können Sie if ([images isEqual:[NSNull null]])

verwenden

Weitere Informationen finden Sie in den Dokumenten mehr Infos zu NSNull

    
Joshua Weinberg 22.12.2011, 13:40
quelle
1

Wenn Sie die Speicheradresse eines Objective-C-Objekts oder eines anderen Zeigers ausgeben möchten, sollten Sie das Flag %p not %@ verwenden. Das Flag %@ erwartet eine Zeichenfolge.

Wenn das Argument jedoch keine Zeichenfolge ist, ruft NSLog automatisch -description für das übergebene Objekt auf. Und wenn die Methode ein Objekt NSNull zurückgibt, gibt das -description für dieses Objekt die Zeichenfolge <null>

zurück %Vor%

Ausgabe: 0x00000000

%Vor%

Ausgabe: etwas wie 0x12345678

Achtung:

%Vor%

Ausgabe: eine Speicheradresse, die immer gleich ist, aber sich von 0x00000000

unterscheidet

Der richtige Weg zu testen, ob ihre Objekte im Array sind, ist wie folgt.

%Vor%     
v1Axvw 22.12.2011 13:46
quelle

Tags und Links