我有一个自定义UIView,它通过UIViewController中的NIB加载。
我一直在努力用 - [UIScrollView retainCount]:消息发送到解除分配的实例错误。
我的自定义UIView子类dealloc方法如下所示:
-(void)dealloc {
[myScrollView dealloc];
[someProperty dealloc];
[super dealloc];
}
问题是由于前面的[myScrollView dealloc],它在[super dealloc]上总是崩溃。
当我将方法更改为:
-(void)dealloc {
[super dealloc];
[myScrollView dealloc];
[someProperty dealloc];
}
一切都很好。我的问题是,如果[super dealloc]被称为第一个或最后一个,它会有所不同吗?在大多数例子中,我看到它被称为last。
答案 0 :(得分:8)
[super dealloc]
应始终是dealloc
中的最后一次通话。您的问题是您应该在其他对象上调用release
,而不是dealloc
。当对象的发布计数达到零时,运行时将调用dealloc
,您的代码永远不应该直接调用它。
因此,您的代码应该看起来像:
-(void)dealloc {
[myScrollView release];
[someProperty release];
[super dealloc];
}