我有一些必须保留为C++代码的内容,但我需要在这些C++类中存储Objective-C对象。这些对象在存储在此期间不会被引用到其他任何地方,因此不能在删除它们之前先释放。在ARC之前,我只是在将它们放入C++类之前对其进行了保留,并在移除时进行了自动释放。一切都很好。
但是使用ARC后,我不确定该怎么办。将C++变量设置为__unsafe_unretained是否足够?似乎并不是,因为一旦Obj-C代码不再使用对象,它就会被删除,或者我没有理解__unsafe_unretained的含义。我能否在ARC下调用CFRetain()和CFAutorelease()?
在ARC下处理这个问题的正确方法是什么?NSArray在最底层上做了什么来保持它所存储的对象?
__unsafe_unretained
的作用就是不保留对象。但无论如何,我不明白为什么不能使用普通的__strong
变量来持有你的 Obj-C 对象。 - Lily Ballard