0

次のコードを使用して、5 秒間隔で継続的に API を呼び出しています。

NSURL *url=[NSURL URLWithString:@"any url"];

ASIFormDataRequest *request=[[ASIFormDataRequest alloc] initWithURL:url];

[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request addRequestHeader:@"Accept" value:@"application/json"];
    [request addPostValue:app.userName forKey:@"username"];
[request addPostValue:app.token forKey:@"token"];
    [request setTimeOutSeconds:40];
[request startSynchronous];
    NSError *error = [request error];
if (!error)
{ //sucesss
    } "

私が抱えている問題は、約 15 ~ 20 分後に、アプリが不正なアクセス エラーでクラッシュすることです。ゾンビ オブジェクトを有効にしましたが、コンソールにメッセージが表示されませんでした。私は何か間違ったことをしていますか、それとも API を継続的に呼び出す標準的な方法を教えてもらえますか? ありがとう。

4

1 に答える 1

1

アプリのメモリ使用量を確認しましたか? これを5秒ごとに呼び出す方法は、割り当て開始しているオブジェクトが解放されていないことを意味する可能性があるため、メモリが不足しているだけですか? NSTimerを使用していると思いますか?

(2 つ目の注意として、なぜ同期呼び出しにデリゲートを使用しているのですか? 解放される前にデリゲートを設定解除しないと、奇妙なエラーが発生することがあります。)

これを行う標準的な方法に関しては、バックグラウンド スレッドでこれを行い、通知を使用して UI を更新することをお勧めします。

また、5 秒ごとにこれを呼び出すかのように呼び出しコードを確認してください。ただし、40 秒のタイムアウトを使用すると、少しスタックする可能性があります (最初にタイマーを停止し、最後に 5 秒にリセットしない限り)。コード)。

于 2013-09-19T09:57:43.167 に答える