一連のUIButtonサブクラスをインスタンス化し、それらをself.viewと可変配列に追加するViewControllerがあります。これらのサブクラスには、別のビューを指すretainプロパティがあります。ほとんどの場合、viewプロパティは、UIButtonサブクラスのスーパービュー(それらが追加されたビューコントローラーのself.view)を指します。ただし、常にではなく、必ずしもそうとは限りません。そのため、継承されたスーパービュープロパティではなく、このプロパティを使用しています。
私が抱えている問題は、ViewControllerのdeallocが次のことを行う場合です。
- (void)dealloc
{
[UIBUttonSubClassesArray release];
[super dealloc];
}
UIButtonサブクラスのdeallocが呼び出されていません。したがって、これらのサブクラスのviewプロパティの追加リリースは呼び出されず、View Controllerの割り当てが解除された場合でも、これらのUIButtonサブクラスごとにViewControllerのビューが1回リークされます。
ただし、代わりにサブクラスのビュープロパティを割り当てにすると、deallocでreleaseを呼び出す必要がなくなり、deallocが呼び出され、ビューを参照するコードがない場合でも、アプリがクラッシュします。
何か案は?