如何解决在UIView dealloc方法中,您是在[super dealloc]之前还是之后取消分配属性?
| 我有一个自定义UIView,它通过UIViewController内的NIB加载。 我一直在努力处理-[UIScrollView keepCount]:整天发送给已释放实例错误的消息。 我的自定义UIView子类dealloc方法如下所示:-(void)dealloc {
[myScrollView dealloc];
[someProperty dealloc];
[super dealloc];
}
问题在于它总是在[super dealloc]上崩溃,因为它前面有[myScrollView dealloc]。
当我将方法更改为:
-(void)dealloc {
[super dealloc];
[myScrollView dealloc];
[someProperty dealloc];
}
一切正常。我的问题是,[super dealloc]是第一个还是最后一个被调用会有所不同吗?在大多数示例中,我看到它被称为last。
解决方法
[super dealloc]
应该始终是dealloc
中的最后一个电话。您的问题是您应该在其他对象上调用release
,而不是dealloc
。当对象的释放计数达到零时,运行时将调用dealloc
,因此您的代码永远不要直接调用它。
因此,您的代码实际上应如下所示:
-(void)dealloc {
[myScrollView release];
[someProperty release];
[super dealloc];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。