在dealloc的实现中,不应该调用超类的实现。您可以重写此方法以释放对象实例变量以外的其他资源,例如:
上面说我们不应该调用超类的实现。但下面说,我们应该“通过向超级用户传递信息,整合dealloc的超类版本。”因此,这两段之间似乎有一些冲突。一定是因为我错过了什么。希望有人能解释一下..。
如果使用手动引用计数,子类必须实现其自己版本的dealloc,以允许释放对象消耗的任何额外内存--例如为已分配对象拥有的数据或对象实例变量动态分配存储。在执行类特定的去分配之后,子类方法应该通过一条消息合并dealloc的超类版本:
类/Reference.html
发布于 2012-01-30 01:31:39
您的第一个报价用于自动引用计数( ARC )启用时,而第二个报价用于ARC是而非启用时。ARC是SDK5.0中提供的一个新特性,它消除了程序员需要完成的大部分手动内存管理。
请参见过渡到ARC发行说明,特别是这些语句:
如果需要管理释放实例变量以外的资源,则可以实现dealloc方法。您不必(实际上不能)释放实例变量. ARC中的自定义dealloc方法不需要调用超脱钙。超级链接是由编译器自动执行的。
https://stackoverflow.com/questions/9058428
复制相似问题