什么';“实际影响是什么?”;“释放”;在objective-c中有没有?

什么';“实际影响是什么?”;“释放”;在objective-c中有没有?,objective-c,memory-management,automatic-ref-counting,Objective C,Memory Management,Automatic Ref Counting,我正在学习objective-c中有关记忆管理的内容。至于以下代码: CFMutableArrayRef cfObject = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL); id obj = CFBridgingRelease(cfObject); 它表示在代码执行后,cfObject指向的对象被释放,但是cfObject仍然指向它,因此它仍然可以像往常一样使用。因此,我想知道释放功能对我在对象释放后仍然可以使用它有什么影响?CfBri

我正在学习objective-c中有关记忆管理的内容。至于以下代码:

CFMutableArrayRef cfObject = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
id obj = CFBridgingRelease(cfObject);

它表示在代码执行后,
cfObject
指向的对象被释放,但是
cfObject
仍然指向它,因此它仍然可以像往常一样使用。因此,我想知道释放功能对我在对象释放后仍然可以使用它有什么影响?

CfBrigingRelease是一种完成CF对象内存管理的方法,同时将对象在其剩余生命周期内交给NSObject内存管理。因此,该对象在CF世界中被释放,但它被分配给
obj
(在ARC下)保留。因此,它仍然存在,您仍然可以通过
cfObject
使用它(但您不应该这样做,因为您已经明确表示,您已经在CF世界中使用它了)。

请参阅我的书:thx!但是我想知道,如果我用一个简单的NSObject或者只是id来替换cfObject的类型,那么在我发布它之后,我还能继续使用它吗?当你尝试它时发生了什么?说真的,我回答了你的问题。你会永远把这个挖出来吗,因为那不是一个让我感兴趣的游戏。非常抱歉,我的mac电脑不可用,所以我才问你。在我尝试之后,我发现如果我试图访问发布的对象,程序将崩溃。我想我在这个问题上遇到了麻烦,因为我不清楚基金会和基金会基金会的区别。我给了你一个链接,向你解释。读一下。