我应该将发布消息发送到已转换的对象吗?

时间:2010-11-07 21:16:36

标签: objective-c

如果我将CF类型转换为基础类型,我应该发送基本类型的发布消息吗?

NSString *name = (NSString*) rawName;
CFRelease(rawName);
//should I [name release]; ?

2 个答案:

答案 0 :(得分:1)

不,不要发送其他发布消息。这些引用相同的对象不同。

通常在混合Core Foundation方法和Cocoa方法时,您可以将对象保留在您的基础中(因此,如果您在Cocoa中工作,请将其保存为NSString)并在需要使用其中一个时将其强制转换为其他框架的方法(例如将字符串传递给Core Foundation方法,只需将其转换为CFString,而不是保留多个引用)。

答案 1 :(得分:1)

在这种情况下* name和* rawName指向同一个对象。当您尝试使用名称时,CFRelease()的rawName将导致EXC_BAD_ACCESS。