2012-03-19 6 views
-1

私は仕事で乗った簡単なiOSアプリを開発しています。 UIWebViewを持つコントローラを追加し、テーブルビューからナビゲートしました。私はそれにpushViewControllerを行うことができるが、私は戻って移動するとき、ここでアプリがクラッシュ:コンソールでiOSアプリがクラッシュする - 次に見たい場所がわからない

- (void)dealloc 
{ 
    myWebView.delegate = nil; // Thread 1 stopped at breakpoint 1 
} 

は、それは言う:

[Switching to process 621 thread 0x13b03] 
[Switching to process 621 thread 0x18703] 
[Switching to process 621 thread 0x11903] 

を明らかに、私はいくつかのミスを犯しました次は何を見なければならないでしょうか?私はARCを使用しています。

THX

編集1

This GDB was configured as "x86_64-apple-darwin".sharedlibrary apply-load-rules all 
Attaching to process 974. 
Pending breakpoint 1 - ""WebViewController.m":57" resolved 
2012-03-19 08:11:05.888 SpotFinder[974:11903] Latitude = 37.785834 
2012-03-19 08:11:05.889 SpotFinder[974:11903] Latitude = -122.406417 
2012-03-19 08:11:06.030 SpotFinder[974:11903] here is a log of places 33 
2012-03-19 08:11:11.030 SpotFinder[974:11903] You selected index_path: <NSIndexPath 0x705c0d0> 2 indexes [0, 2] 
[Switching to process 974 thread 0x13a03] 
[Switching to process 974 thread 0x15e03] 
[Switching to process 974 thread 0x13a03] 
[Switching to process 974 thread 0x11903] 
Current language: auto; currently objective-c 
(gdb) 

編集2 は、スタックトレース:

enter image description here

+0

これらのコンソールメッセージは無関係です。それはコンソールで何を言いますか? – mattjgalloway

+0

@timpone [スタックトレース](http://stackoverflow.com/a/5660248/296387)? [ゾンビを有効にする](http:// 42ゲーム。net/quick-note-on-setting-nszombieenabled-環境変数-xcode-4 /)? [すべての例外に対して設定されたブレークポイント](http://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Debugging/Debugging.html#//apple_ref/doc/uid/TP40010215-CH3-SW38 )? –

+0

Hmm ...「ARCはdeallocの明示的なメッセージ送信を禁止します」 – timpone

答えて

0

今までそれが非ARC環境にあるかどうかを直接にdeallocを呼び出すことはありませんまたはARCを有効にしてください。

releaseという非ARCの場合、その特定のオブジェクトのシステムによってdeallocが呼び出されます。

ARCを有効にしたDeallocは、そのオブジェクトに参照がなくなると(システムによって)呼び出されます。

+0

ugh - これは言うが、私は行番号を見て始めたとき、私は2番目のブレークポイントがあったことを知って、実際にアプリがクラッシュしていなかった。ブレークポイントでただ凍結しました。私の間違い。皆に助けを求めるThx – timpone

0

ARCを使用すると、deallocメソッドを定義して参照を削除し、リソースをクリーンアップできますが、明示的に[super dealloc]を呼び出すべきではありません。

ARC Enforces New RulesTransitioning to ARC Release Notesの一部)を参照してください。

は、明示的にdeallocを呼び出し、または実装するか、 リリース、retainCount、または自動解放を保持呼び出すことはできません。禁止は、@セレクタ(保持)、@セレクタ(リリース)などを使用することにまで及んでいます。

インスタンス変数を解放する以外のリソース を管理する必要がある場合は、deallocメソッドを実装できます。インスタンス変数を解放する必要はありませんが(実際には できません)、システムクラスで [systemClassInstance setDelegate:nil]を呼び出し、ARCを使用してコンパイルされていない他のコード を呼び出す必要があります。

ARCのカスタムdeallocメソッドでは、[super dealloc] を呼び出す必要はありません(実際にはコンパイラエラーが発生します)。スーパーへの連鎖は、自動化され、コンパイラによって実施される です。

あなたはまだCFRetain、CFRelease、およびその他の関連する関数Core Foundationのスタイルのオブジェクトと を使用することができます(「管理フリーダイヤル ブリッジング」を参照してください)。

関連する問題