如果我将CF类型转换为基础类型,我应该发送基本类型的发布消息吗?
NSString *name = (NSString*) rawName;
CFRelease(rawName);
//should I [name release]; ?
答案 0 :(得分:1)
不,不要发送其他发布消息。这些引用与相同的对象不同。
通常在混合Core Foundation方法和Cocoa方法时,您可以将对象保留在您的基础中(因此,如果您在Cocoa中工作,请将其保存为NSString)并在需要使用其中一个时将其强制转换为其他框架的方法(例如将字符串传递给Core Foundation方法,只需将其转换为CFString,而不是保留多个引用)。
答案 1 :(得分:1)
在这种情况下* name和* rawName指向同一个对象。当您尝试使用名称时,CFRelease()的rawName将导致EXC_BAD_ACCESS。