我正在研究Objective-c中的内存管理。至于以下代码:
CFMutableArrayRef cfObject = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
id obj = CFBridgingRelease(cfObject);
它表示在代码执行后,cfObject
指向的对象被释放但cfObject
仍然指向它,因此它仍然可以像往常一样使用。所以我想知道释放函数给出的影响是什么,在对象发布后我仍然可以使用它?
答案 0 :(得分:0)
CFBridgingRelease
是一种完成CF对象内存管理的方法,同时将对象在其生命周期的剩余时间内交给NSObject内存管理。因此,此对象在CF世界中发布,但由obj
(在ARC下)的赋值保留。因此它仍然存在,你仍然可以通过cfObject
使用它(但你不应该,因为你已明确表示你已经在CF世界中完成了它)。