2010-11-07 67 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。