2009-04-18 15 views
1

In einer Unterbrechungsaktion, werde ich dies:Formatierung integer für String-Ausgabe

@(const char *)[(NSString*)[myobject retainCount]UTF8String]@ 

, die diese Ausgabe gibt:

<Error: Cannot access memory at address 0x2> 

Wenn ich dies tun:

@(NSString*)[myboject retainCount]@ 

es gibt eine Speicheradresse aus. Aber wenn ich dies in Code tun:

NSLog(@"retain count is: %d", [myobject retainCount]); 

es gibt diese Ausgabe:

2009-04-18 09:58:48.085 myapp[80277:20b] retain count is: 1 

Was die Syntax zur Ausgabe korrekt in der Unterbrechungsaktion benötigt wird?

Wo finde ich auch eine vollständige Liste der Formatschlüssel für Breakpoint-Aktionen?

Antwort

5

sollten Sie in der Lage sein, tatsächlich einen „Debugger-Befehl“ Aktion Breakpoint zu verwenden, um über die „Log“ Aktion, die Einstellung der Befehlstext auf:

p (int)[myObject retainCount]

Wenn Sie die Beschreibung eines Ziel protokollieren möchten -C Objekt:

po myObject

können Sie eine Log-Aktion verwenden, bevor er eine Nachricht anzuzeigen, die angibt, was gedruckt wird, wenn Sie möchten.

Wie für die spezifische Retain Count Problem melden Sie sich in diesem Fall, Prüfung Retain zählt direkt und versucht, Speicherfehler zu lösen, so dass dies nicht als eine große Übung angesehen wird. Eine gute Erklärung dazu finden Sie unter this post.

5

retainCount gibt eine Zahl zurück. Es ist falsch, es in eine Zeichenfolge umzuwandeln, da es sich um eine Zahl und nicht um eine Zeichenfolge handelt. So drucken Sie eine Nummer als String müssen entweder rufen:

printf("%d",[myobject retaincount]); 

oder diese Zeichenfolge ausdrucken:

[NSString stringWithFormat:@"%d",[myobject retaincount]];