在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()
分配的。