0

私は現在NSURLConnection、いくつかを非同期で使用していますUIViews(すべてのビューはNSURLConnectionデリゲートとして処理されます)。私が抱えている問題は、ユーザーがビューを切り替えるのが速すぎてデリゲートがNSZombieアプリをクラッシュさせたときです。つまり、NSURLConnection には生きたデリゲートがありません。それで、最初の質問は、これを回避する方法があるかどうかです。

2 番目の質問は簡単です。NSZombie をどのように扱うのですか? 単純なif(myObject != nil)..ことはまったく機能しません。

4

1 に答える 1

7

デリゲートを破棄する前にキャンセルする必要があります。NSURLConnectionデリゲートとして機能する NSURLConnection への参照を保持し、UIViewを呼び出すだけ[urlConnection cancel]です。

メッセージを解放した後、そのポインターを引き続き使用する場合は、メッセージへのポインターを nil に設定する必要があります。例として:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

if (myObject != nil) {
   [myObject doSomething];
}

ただし、メッセージを送信することは有効であるためnil、メッセージの送信を安全に保護する必要がないことに注意してください。の場合、まったく効果がありませんmyObject == nil

于 2009-12-04T17:04:10.447 に答える