问题描述
|
我有一个自定义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];
}