我有一个视图控制器,它实例化了一堆 UIButton 子类并将它们添加到它的 self.view 和一个可变数组中。这些子类又具有指向另一个视图的保留属性。在大多数情况下,view 属性指向 UIButton 子类的超视图(视图控制器的 self.view,它们被添加到其中)。但并非总是如此,也不一定,这就是为什么我使用这个属性而不是继承的 superview 的原因。
我遇到的问题是,当视图控制器的 dealloc 执行时:
- (void)dealloc
{
[UIBUttonSubClassesArray release];
[super dealloc];
}
UIButton 子类的 dealloc 没有被调用。因此,这些子类中视图属性的附加版本不会被调用,即使视图控制器被释放,我也会为每个 UIButton 子类泄漏一次视图控制器的视图。
但是,如果我将子类的视图属性设为赋值,这样我就不需要在它们的 dealloc 中调用 release,它们的 dealloc 确实会被调用,即使现在没有引用视图的代码,应用程序也会崩溃。
有任何想法吗?