4

人気のある iOS アプリを持っていますが、常に同じ行にいくつかのクラッシュ レポートが表示されます。私は一生バグを再現することはできませんが、ARC を使用していないサードパーティのライブラリに関係していると思われるため、そうすべきではないときに何かがリリースされています。

メモリの警告をシミュレートしようとしましたが、malloc を使用してメモリのランダムなグロブを取得しようとしましたが、バグを再現できません。しかし、多くの人が毎日電子メールを送って文句を言うほど頻繁に起こります。

OS が自動解放する必要があるオブジェクトを解放する「クリーンアップ」を行うことは知っていますが、シミュレーターでこれを強制する方法はありますか?

4

1 に答える 1

1

割り当て解除されたオブジェクトにメッセージが送信されています。

何かが割り当て解除された DBRequest と通信しようとしているか、DBRequest が割り当て解除されたオブジェクトと通信しようとしています。

これの最も一般的な原因は、次のようなことをした場合です。

[DBRequest setNetworkRequestDelegate:self];
DBRequest *myDBRequest = [DBRequest initWithURLRequest:request andInformTarget:self selector:@selector(doSomething)];

次に、何らかのネットワーク アクティビティを開始すると、ユーザーが別のビューに移動して割り当てが解除さselfれ、ネットワーク アクティビティが終了し、完了したことを通知しようとselfします。

[myDBRequest cancel];通知されるオブジェクトの割り当てが解除されるケースの 100% で呼び出していることを確認してください。メソッドは、通常、これdeallocに対して安全な場所です。

于 2013-08-30T06:15:12.940 に答える