2011-07-02 28 views
0

爲什麼我不能做計數後NSSet無用嗎?

NSLog(@"mySet count: %@", [mySet count]); 

,之後使用的NSSet? (如果我使用它的應用程序崩潰與「EXC_BAD_ACCESS」

我試過可變/不可變,保留,複製,自動釋放......各種設置,並在計數消息後,他們都變得無用和崩潰。如果我不指望他們像預期的那樣,如果我把它們打印出來是這樣的:!

NSLog(@"mySet: %@", mySet); 

它的罰款的問題似乎只是計數

有人可以解釋我這個?我已經搜查,沒有發現任何關於這種奇怪的行爲

+0

向我們展示更多的代碼.... –

+0

問題就在那裏,和迪特里希·埃普看到它! – xfze

回答

3

此崩潰的原因是因爲[mySet count]返回一個整數,並且%@格式說明期望的對象。將其更改爲:

NSLog(@"mySet count: %lu", [mySet count]); 

這是目標C的「陷阱」之一(除非你已經很熟悉C或C++):有時你的數據是一個對象,有時你的數據不是一個對象。這對於與C代碼兼容是必需的。

+0

+1擊敗我。 –

+0

ahaha怎麼啞了,錯過了徹底!我很高興我已經複製粘貼,否則我可以寫正確的方式(通常我知道計數好好嘗試返回一個對象,哈哈) – xfze