在Apple的NSObjts文档中,NSZoneFree在-(空)DEOLLC示例代码中被调用:

- (void)dealloc {
    [companion release];
    NSZoneFree(private, [self zone])
    [super dealloc];
}

您可以在contextover here中找到它。
我从来没有想过我应该在自己的nsobject子类(或者什么ns-whateverclass-subclasses)中调用nszonefree,在文档中的任何地方都找不到关于这个主题的任何结论。
关于使用NSZONFEY的所有内容,都是在Memory Management Programming Guide中简要提到的,并且对AA>中的函数进行了解释,但是这些文档中没有一个让我明白我是否应该在DeLoC方法的上下文中担心它。
在我自己的类的DELOLC实现中,有没有人可以澄清我何时应该调用NSZONEONE?
编辑:谢谢你的回复,现在对我来说更清楚了:- Dirk

最佳答案

NSZoneFree()平衡对NSZoneMalloc()的呼叫,就像-release平衡对-alloc-copy的呼叫一样,CFRelease()平衡对CFRetain()CF*Create*()的呼叫,或者,就这一点而言,free()平衡对malloc()calloc()的呼叫。
考虑到C库在MacOSX上使用的分配器,这大部分都是学术性的,但最佳实践表明,您可以按照获得内存的方式释放保留内存,对于该类,实例变量private以前是用NSZoneMalloc()分配的。

09-15 21:44