使用objc_disposeClassPair()

Chr*_*eux 5 cocoa objective-c objective-c-runtime

运行时API中有一个未记录的函数,该函数似乎(根据一些玩具程序而定)按照其名称的含义执行操作:

OBJC_EXPORT void objc_disposeClassPair(Class cls) 
     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
Run Code Online (Sandbox Code Playgroud)

但是,详细信息在地面上很少。因此,与其说是一个问题,不如说是更多相关问题的集合:

  • 是否有任何关于它的好文章/博客文章,或者有人有使用它的经验(一个快速的Google建议PyObjC开发人员至少在某一时刻考虑使用它)?
  • 是否完全释放了处置的类(经常创建和删除类的应用程序会泄漏内存吗?)
  • 除了未公开的API以外,是否还有其他需要牢记的陷阱?
  • 苹果在哪里使用(可能使用)?NSBundle正在卸载?KVO?

ugh*_*fhw 2

废弃的类是否完全释放(频繁创建和删除类的应用程序会泄漏内存吗?)

是的,它们将被完全取消分配。如果您查看http://www.opensource.apple.com/source/objc4/objc4-437/test/classpair.mcycle中的函数,您会发现它既分配又释放多个类。下面的实现运行该函数 100 次,并检查是否存在泄漏,这表明他们不会发布严重泄漏的实现。如果您想了解更多信息,您应该查看http://www.opensource.apple.com/source/objc4/objc4-437/runtime/中的代码。您可能可以在某处找到苹果这两个函数的实际代码以及使用它的位置。main