如果某个功能遵循'获取规则' (如Apple所述:https://developer.apple.com/library/ios/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-SW1)
在你有机会打电话给CFRetain之前,结果是否可以解除分配(因为CFRelease else-where)?
以下面的代码为例:
R.layout.content_main_wifi
在我们实际调用CFRetain时,我们是否可能持有对释放的CFString的引用?如果没有,为什么不呢?如果可能的话,我怎么能避免这种情况发生?
答案 0 :(得分:0)
对于此代码:
CFStringRef * str = CFAttributedStringGetString(...);
CFRetain(str);
无法持有对CFString
对象的悬空引用。
这是因为:
str
位于该堆栈上,因此对该线程是私有的,因此没有其他线程可以引用该字符串对象。