0

いくつかの文字列を保持するだけの Location という名前のクラスを作成しました。ビューコントローラーでそのクラスの2つのインスタンスを使用しています.viewDidLoadで2つの変数を初期化すると、そのメソッドでは正常に機能しますが、後で使用しようとするとnullになります。それらを保持プロパティとして設定しました。私はそれらをテストし、それらがviewDidLoad用に初期化されていることを知っています(ビューでフィールドを使用しています)。それらが解放されないようにするために、Location クラスで何か特別なことをする必要がありますか? 別の方法でそれらを再初期化すると、すべてがスムーズに実行されます。

4

2 に答える 2

1

viewDidLoad で適切に初期化されたインスタンス変数は、他のメソッドの場合と同様に、通常どおり値を保持する必要があります。たとえば、同じ名前のインスタンス変数を隠している viewDidLoad にローカル変数がある場合など、コーディング エラーにより、説明している問題が発生する可能性があります。

于 2010-08-06T02:21:46.933 に答える
0

あなた(またはイベントループ)はおそらく、自動解放されているか何かであるため、viewDidLoadが完了した後に初期化中のオブジェクトを解放しています。これを防ぐには、「retain」属性を持つクラスで問題の変数のプロパティを作成し、dealloc でそれらを nil に設定します。

于 2010-08-06T05:57:21.617 に答える