2009-04-18 119 views
1

在斷點動作,我會這樣:格式化整數字符串輸出

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

這給出了這樣的輸出:如果我這樣做

<Error: Cannot access memory at address 0x2> 

@(NSString*)[myboject retainCount]@ 

它輸出一個內存地址。但是,如果我這樣做代碼:

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

它給出了這樣的輸出:

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

的語法需要正確輸出的斷點動作是什麼?

另外,我在哪裏可以找到斷點操作格式鍵的完整列表?

回答

5

你應該能夠實際使用「調試器命令」斷點行動在「日誌」行動,命令文本設置爲:

p (int)[myObject retainCount]

如果你想記錄一個目標的描述-C對象:

po myObject

您可以使用Log動作它顯示一條消息,指出如果你想在打印之前什麼。

至於你記錄在這種情況下的具體保留計數問題,直接檢查保留計數並試圖解決內存相關的錯誤,這種方式不被認爲是一種好的做法。關於這一點,請參閱this post

5

retainCount返回一個數字。簡單地將它轉換爲字符串是不正確的,因爲它是一個數字,而不是一個字符串。要打印數量,你必須要麼調用一個字符串:

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

或打印出這個字符串:

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