[解決済み] ViewController の respondsToSelector: 割り当て解除されたインスタンスにメッセージが送信される (CRASH)
質問
さて、ここからが本題ですが、私は が嫌いです。 を出すのは嫌いです。なぜなら、私は通常それらを自分で処理するからですが、私はただ できない の後にでも、私の方法を得ることができます。 すでに複数の質問を表示する .
OK、ここに問題があります、私は私のアプリがこのスタックトレースでランダムにオンとオフのクラッシュを見つけます。
*** -[ViewController respondsToSelector:]: message sent to deallocated instance 0x1e5d2ef0
ここで
ViewController
は様々で、私のコードがクラッシュする場所には
NO
という関連性を持っています。
ViewController
であり、それを所有したり呼んだりしているわけではありません。
また、コンソールトレースを取得するために、私はゾンビを有効にしました。そうでなければ、私はコンソールプリントを全く取得できず、ただ
objc_msgSend
と表示されるだけです。これは、リリースされている何かをメッセージングしていることを意味します。でも、それがどこにあるのかがわからないのです...。私は本当に困っています 通常、私は
いつも
デバッグしています。
繰り返しますが、これは異なる場所で、異なる時間に、オンとオフでクラッシュします。そして、クラッシュする場所には、ほとんど
いいえ
との関連性はありません。
ViewController
. そして、私はこれが非常に紛らわしいと思います。
私のコードのどれかが必要なのでしょうか?私は持っている たくさん のファイルがあり、さまざまな場所でクラッシュしているので、私のコードを配布すると混乱します!
シンボリック ブレークポイントを追加しようとしましたがうまくいかず、iOS 用の Instruments アプリケーションでは Zombies は使用できません。シミュレーターにはサポートされていないアーキテクチャーのフレームワークがあるため、私のアプリをシミュレーター上で実行することはできません。
みなさんありがとうございます...
どのように解決するのですか?
使用方法 楽器 を使用して、割り当て解除されたインスタンス エラーを追跡します。アプリケーションのプロファイル ( Cmd ⌘(英語 + I を選択し ゾンビ というテンプレートを使います。アプリケーションを実行した後、クラッシュさせてみてください。このようなものが表示されるはずです。
ポップオーバーのアドレスの横にある矢印をクリックすると、割り当て解除後に呼び出されたオブジェクトが表示されます。
このオブジェクトの保持カウントを変更したすべての呼び出しが表示されるはずです。これは、retain/releaseメッセージを直接送信したり、autoreleaseプールを排出したり、NSArraysに挿入したりすることが原因です。
参照 カラムは、アクションが呼び出された後のretainCountと 呼び出し元責任者 には、それが実行されたクラス名とメソッドが表示されます。retain/releaseをダブルクリックすると、それが実行されたコードの行が表示されます (これが機能しない場合は、呼び出しを選択して 拡張された詳細 ペインで対応するコードを選択することで呼び出しを調べることができます)。
これにより、すべての retainCount のライフサイクルをすべて調べることができ、おそらくすぐに問題を見つけることができるでしょう。あなたがしなければならないことは、欠落している retain を見つけることです。 リリース .
関連
-
[解決済み] RootViewControllerのスイッチングアニメーション
-
[解決済み] なぜObjective-Cはプライベートメソッドをサポートしないのですか?
-
[解決済み] Objective-C の boolean の書式設定文字列?
-
[解決済み] NSLog オーバーライドされた記述方法でのオブジェクトのメモリアドレスの記録
-
[解決済み] メソッドが存在するかどうかをチェックする
-
[解決済み] Objective-Cで`oneway void`の使用例?
-
[解決済み] NSTimeInterval(秒)を分単位に変換する方法
-
[解決済み] Objective-Cでの文字列比較
-
[解決済み] フォーマット文字列, 先頭のゼロを含む整数
-
[解決済み] CocoaでperformSelector:withObject:afterDelay:をプリミティブ型で使用する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] インスタンスメッセージの受信型'CALayer'は前方宣言である」とはどういう意味か?
-
[解決済み] ブロックベースのAPIメソッドでnonnullとnullableのObjective-Cキーワードを使用する方法
-
[解決済み] Info.plistのCFBundleVersionのアップロードエラー
-
[解決済み] iOSアプリ:通知を消去するには?
-
[解決済み] NSStringの最初の3文字を取得するには?
-
[解決済み] Swiftの変数はアトミックか?
-
[解決済み] 宣言されたプロパティは、対応するインスタンス変数を必要としますか?
-
[解決済み] NSStringをstd::stringに変換するにはどうしたらいいですか?
-
[解決済み] Category is implementing method which will be implemented by its primary class" の警告を抑制する。