objective-c – 使用objc_disposeClassPair()

在运行时API中有一个未记录的函数,它出现(基于一些玩具程序)来做它的名字所暗示的作用:

OBJC_EXPORT void objc_disposeClassPair(Class cls) 
     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;

但是,详细信息在当地相当薄弱.所以这是一组相关的问题,而不是一个问题:

>有没有关于它的好文章/博客文章,或者有没有任何使用它的经验(快速谷歌建议PyObjC开发人员至少考虑过一次使用它)?
>处理后的类是否已完全解除分配(经常创建和删除类的应用程序会泄漏内存吗?)
>除了通常的未记录的API之外,还有什么值得记住的问题吗?
>苹果公司在哪里(/可能会)使用它? NSBundle卸货?志愿?

最佳答案

Are disposed-of classes completely deallocated (would an application that frequently created and deleted classes leak memory?)

是的,他们将完全取消分配.如果你看一下http://www.opensource.apple.com/source/objc4/objc4-437/test/classpair.m中的循环函数,你会发现它分配和释放多个类.下面的主要实现运行该函数100次,并检查泄漏,这表明它们不会释放显着泄漏的实现.如果你想了解更多信息,你应该查看http://www.opensource.apple.com/source/objc4/objc4-437/runtime/中的代码.你可以在某处找到apple的实际代码,以及使用它的地方.

点赞