2010-11-07 68 views

回答

1

不,不要發送另一個版本消息。這些是不同的參考相同的對象。

通常,當混合使用Core Foundation方法和Cocoa方法時,無論您的基地是什麼(所以如果您在Cocoa工作,請將其保留爲NSString),並在需要使用其中一個其他框架的方法(例如將字符串傳遞給Core Foundation方法,只需將其轉換爲CFString,而不是保留多個引用)。

+0

因此,由於這些是對同一對象的不同引用,這是否意味着完成後釋放其中一個引用就足夠了? – Chiron 2010-11-07 21:39:43

+0

是的,這正是它的意思。如果您想要長時間保持參考,則必須使用保留或複製消息來獲取該參考的所有權,然後再發布。在您的示例中,一旦您在rawName上調用CFRelease(),就無法安全地訪問rawName或name。 – 2010-11-07 21:59:07

+0

在我的情況下,我將firstName添加到NSMutableArray,然後我是CFRelease rawName,我在做對嗎? – Chiron 2010-11-07 22:11:39

1

在這種情況下,* name和* rawName指向同一個對象。當您嘗試使用名稱時,CFRelease()的rawName將導致EXC_BAD_ACCESS。