2009-12-04 8 views
5

私はiPhoneアプリを持っています。それは正常に動作するようです。 Xcodeにプロビジョニングされたiphoneに接続し、アプリを実行すると、オーガナイザウィンドウのコンソールログには、ホームキーでアプリを終了するときに常にセグメンテーションエラーが表示されます。シグナル11、iphoneアプリ出口のセグメンテーションフォルト

誰もがこれを見ていますが、その問題の原因を知っていますか?私はバックラウンドでWebページを読み込むためにスレッドを使用しますが、終了時にスレッドを停止します。

私のアプリは永続的な情報を保存します。ビルドと解析の機能を使用すると、2つの可能性のあるメモリリークが発生しますが、それぞれの場合、オブジェクトを割り当てて配列に保持しています。

これは正常ですか?

+1

NSZombieEnabledは以前私が見つけられなかったクラッシュを見つけるのを助けました。 – BastiBen

答えて

7

NSZombieEnabledでアプリケーションを実行してみてください。これは、あなたが何かオブジェクトを解放しているかどうかを教えてくれます。ゾンビを有効にするには次のようにします。

  1. Choose Project > Edit Active Executable to open the executable Info window.
  2. Click Arguments.
  3. Click the add (+) button in the “Variables to be set in the environment” section.
  4. Enter NSZombieEnabled in the Name column and YES in the Value column.
  5. Make sure that the checkmark forthe NSZombieEnabled entry is selected.
+0

NSZombieEnabledでは、問題を捕捉するためにどこにブレークポイントを設定する必要がありますか? この設定では、meプログラムは次のメッセージで早期に終了します。CFString autorelease:解放されたインスタンスに送信されたメッセージ。 メッセージが割り当てられていない文字列に送信されたときに中断したいので、どの文字列を見つけることができます。 ありがとう、 ゲリー – Gerry

+0

ゾンビが有効になっています。私のコードは、以下のコードの[parser parse]行の中にあります。このビットはNSThreadで発生します。何が問題を引き起こすかについての考え。私のfoundCharactersルーチンはヒットしません。 ありがとう、 Gerry(次のコメントのコード) – Gerry

+0

NSURL * nsurl = [NSURL URLWithString:query]; \t NSURLRequest * request = [NSURLRequest requestWithURL:nsurl]; \t \t data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; \t \t NSXMLParser * parser = [[NSXMLParser alloc] initWithData:data]; \t [パーサーsetDelegate:self]; \t [パーサーsetShouldProcessNamespaces:NO]; \t [パーサーsetShouldReportNamespacePrefixes:NO]; \t [パーサーsetShouldResolveExternalEntities:NO]; \t errorStr = nil; \t if([parser parse] == YES) // stuff – Gerry

0

終了時に、アプリケーションがオブジェクトを過剰にリリースする可能性があります。解放する前に各オブジェクトをダンプしたり、deallocメソッドでデバッグを行ったりしてください。

0

おそらく、オブジェクトの保持回数よりも多くのオブジェクトを解放している可能性があります。問題が見つかるまで、deallocの方法(または他の場所)で-releaseコールをコメントアウトしてください。

次に、その呼び出しのコメントを外し、コード内のどこかでそのオブジェクトを過剰に解放しようとしています。

あなたは便利な方法を使用している場合、例えば、(例えば[NSString stringWithFormat:@"..."]alloc-init方法とは対照的に(例えば[[NSString alloc] initWithFormat:@"..."])得られた便利なオブジェクトが自動解放され、手動で解放されるべきではありません。

0

私の問題はCydiaのからuididfakerとlocationholicで、アンインストール後にそれらは私のiPhone上でうまく実行Xcodeの。

関連する問題