0

-ARCの使用

-UIViewControllerをサブクラス化する「UIViewControllerWithLoadingView」と呼ばれる、作成したクラスをすべてサブクラス化する5つの個別のView Controllerがあります。

-サブクラスとスーパークラスの両方で、次のようにプロパティを割り当ておよび割り当て解除します。

@property (strong, nonatomic) NSURLConnection *urlConnection;

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.urlConnection=nil;
}

- didReceiveMemoryWarning が呼び出されると、サブクラスの viewDidUnload メソッドが正常に動作するようになりました。BBBUUTTT スーパー クラス UIViewControllerWithLoadingView でプロパティを nil に設定すると、アプリケーションがクラッシュします。特に、サブクラスのプロパティを nil に設定した場所です。そのため、現時点では、スーパークラスでプロパティを nil に設定していません。これは、実行時にライブ バイトが積み重なっていくため、問題になります。

4

2 に答える 2

0

問題はスーパークラスにあり、ビューコントローラーへのプロパティ参照を持つuiviewを拡張したビューがありました。さて、deallocは自動的にアークで呼び出されるので、deallocは実際にはビューコントローラー自体をnilに設定し、クラッシュを引き起こします。カスタムビュークラスのviewcontrollerのプロパティを削除すると、問題は発生しなくなりました

于 2012-07-24T14:07:22.917 に答える
0

経験則として、dealloc や viewDidUnload などの「クリーンアップ」するメソッドは、他のすべての処理を行った後に super を呼び出す必要があります。(そして、init のように "セットアップ" するメソッドは、最初に super を呼び出します。) すべてのサブクラスの実装を見ないと、それが問題なのかどうかはわかりませんが、それが出発点になります。

于 2012-07-23T14:00:50.000 に答える