問題タブ [dealloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3456 参照

objective-c - 解放中に自分自身でメソッドを呼び出す

解放する前にクリーンアップする必要があるオブジェクトの辞書があります。辞書全体に対してこれを行うメソッドがあります。メソッドで辞書を解放する前に-dealloc、同じことをしたいと思います。ただし、解放中のオブジェクトの状態はわかりません。たとえば、C# や Java では、ファイナライズされるオブジェクトでメソッドを呼び出すことはありませんが、これが Objective C と割り当て解除に適用されるかどうかはわかりません。self割り当て解除中にクリーンアップ メソッドを呼び出すことは許容されます-deallocか?

0 投票する
2 に答える
1204 参照

iphone - iPhone-UIViewControllerクラスのdealloc関数が呼び出されることはありません

私のプロジェクトに問題があります。

「Menu」UIViewControllerクラスがあり、dealloc関数が呼び出されることはありません。ほとんどのUIはInterfaceBuilderで追加され、IBOutletはありません。

Deallocが呼び出されていない場合、どうすればメモリを解放できますか?


メモリ警告をシミュレートしたところ、dealloc関数が呼び出されました。

これが私のコードの例です:

それで、私が2番目の画面にいて、メモリ警告をシミュレートするとき、ファーストクラスからのdeallocを起動する必要がありますか?

とにかく、私のアプリケーションでは、deallocは:(と呼ばれていません。

0 投票する
1 に答える
569 参照

ios - アプリケーションの実行中に UITableViewDelegate dealloc メソッドが呼び出される

テーブルのデリゲート メソッドを処理するクラスがあります。IB を使用し、クラスに変更した UITableViewDelegate を NIB にドラッグしました。また、UITableView オブジェクトを NIB に含め、ここでデリゲートと dataSource を TableViewDelegate クラスに接続します。

私のクラスはインターネットからテーブル データを取得するため、ビュー デザインで一度呼び出されたデリゲート メソッドを取得し、データがまだ到着していないためカウント 0 を返します。すべてのデータの取得が完了したら、[myTable reloadData] を実行し、デリゲート メソッドを再度呼び出します。問題は、numberOfRowsInSection が呼び出されることです。ここで、行数が返されますが、cellForRowAtIndexPath が呼び出されることはなく、代わりに EXC_BAD_ACCESS が返されます。スタック履歴とゾンビを有効にした後、クラスの割り当て解除が呼び出されていることがわかりました。

dealloc restTable クラス - dealloc メソッド内の NSLOG で生成されます。

2011-02-27 00:33:59.979 PesquisaMapa[3526:207] * -[restTable tableView:cellForRowAtIndexPath:]: 割り当て解除されたインスタンス 0x5624190 に送信されたメッセージ オブジェクトは最初に IB で作成され、それに対する IBOutlet がメインで宣言されているためクラス ヘッダー ファイルが削除され、アプリケーションが終了したときにのみ割り当てが解除されるため、クラスのこのインスタンスが割り当て解除される理由が本当にわかりません。私のスタックは次のとおりです。

(gdb) info malloc-history 0x5624190 Alloc: Block address: 0x05624190 length: 160 Stack - pthread: 0xa0a5f540 number of frames: 34 0: 0x9876f103 in malloc_zone_calloc 1: 0x9876f05a in calloc 2: 0x110ad0f in _internal_class_createInstanceFromZone 3: 0x110d87d in class_createInstance 4: 0xedaff8 +[NSObject(NSObject) allocWithZone:] 5: 0xedadfa in +[NSObject(NSObject) alloc] 6: 0x4c1205 in -[UIClassSwapper initWithCoder:] 7: 0x5a79e4 in UINibDecoderDecodeObjectForValue 8: 0x5a8693 in -[UINibDecoder decodeObjectForKey:] 9: 0x4c0f43 -[UIRuntimeConnection initWithCoder:] で 10: UINibDecoderDecodeObjectForValue で 0x5a79e4 11: UINibDecoderDecodeObjectForValue で 0x5a72dc: -[UINibDecoder decodeObjectForKey:] で 0x5a8693: -[UINib instanceiateWithOwner:options:] で 0x4c0200 14:0x4c2081 in -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] 15: 0x37aa94 in -[UIViewController _loadViewFromNibNamed:bundle:] 16: 0x378709 in -[UIViewController loadView] 17: 0x3785e3 in -[UIViewController view] 18: 0x22fe in - /Users/pcasqueiro/Documents/PesquisaMapaAppDelegate.m:24 で [PesquisaMapaAppDelegate アプリケーション:didFinishLaunchingWithOptions:] :statusBarStyle:statusBarHidden:] 21: -[UIApplication handleEvent:withNewEvent:] で 0x2d7db2 22: -[UIApplication sendEvent:] で 0x2d0202 23: _UIApplicationHandleEvent で 0x2d5732 24: PurpleEventCallback で 0x18eca36 25: 0xf98064 でオプション:] 15: -[UIViewController _loadViewFromNibNamed:bundle:] の 0x37aa94 16: -[UIViewController loadView] の 0x378709 17: -[UIViewController ビュー] の 0x3785e3 18: -[PesquisaMapaAppDelegate アプリケーション:didFinishLaunchingWithOptions:] の 0x22fe /Users/pcasqueiro /Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 19: 0x2cb1fa in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: 0x2d7db2 in -[ UIApplication handleEvent:withNewEvent:] 22: -[UIApplication sendEvent:] で 0x2d0202 23: _UIApplicationHandleEvent で 0x2d5732 24: PurpleEventCallback で 0x18eca36 25: 0xf98064 でオプション:] 15: -[UIViewController _loadViewFromNibNamed:bundle:] の 0x37aa94 16: -[UIViewController loadView] の 0x378709 17: -[UIViewController ビュー] の 0x3785e3 18: -[PesquisaMapaAppDelegate アプリケーション:didFinishLaunchingWithOptions:] の 0x22fe /Users/pcasqueiro /Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 19: 0x2cb1fa in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: 0x2d7db2 in -[ UIApplication handleEvent:withNewEvent:] 22: -[UIApplication sendEvent:] で 0x2d0202 23: _UIApplicationHandleEvent で 0x2d5732 24: PurpleEventCallback で 0x18eca36 25: 0xf98064 で-[UIViewController loadView] で 0x378709 17: -[UIViewController ビュー] で 0x3785e3 18: -[PesquisaMapaAppDelegate アプリケーション:didFinishLaunchingWithOptions:] で 0x22fe /Users/pcasqueiro/Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 で 19: 0x2cb1fa - [UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: 0x2d7db2 in -[UIApplication handleEvent:withNewEvent:] 22: 0x2d0202 in -[UIApplication sendEvent:] 23 : _UIApplicationHandleEvent の 0x2d5732 24: PurpleEventCallback の 0x18eca36 25: 0xf98064 の-[UIViewController loadView] で 0x378709 17: -[UIViewController ビュー] で 0x3785e3 18: -[PesquisaMapaAppDelegate アプリケーション:didFinishLaunchingWithOptions:] で 0x22fe /Users/pcasqueiro/Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 で 19: 0x2cb1fa - [UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: 0x2d7db2 in -[UIApplication handleEvent:withNewEvent:] 22: 0x2d0202 in -[UIApplication sendEvent:] 23 : _UIApplicationHandleEvent の 0x2d5732 24: PurpleEventCallback の 0x18eca36 25: 0xf98064 の] /Users/pcasqueiro/Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 で 19: 0x2cb1fa in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: -[UIApplication handleEvent:withNewEvent:] で 0x2d7db2 22: -[UIApplication sendEvent:] で 0x2d0202 23: _UIApplicationHandleEvent で 0x2d5732 24: PurpleEventCallback で 0x18eca36 25: 0xf98064 で] /Users/pcasqueiro/Documents/PesquisaMapa/Classes/PesquisaMapaAppDelegate.m:24 で 19: 0x2cb1fa in -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] 20: 0x2cd55e in -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] 21: -[UIApplication handleEvent:withNewEvent:] で 0x2d7db2 22: -[UIApplication sendEvent:] で 0x2d0202 23: _UIApplicationHandleEvent で 0x2d5732 24: PurpleEventCallback で 0x18eca36 25: 0xf98064 で_UIApplicationHandleEvent 24 の 0x2d5732: PurpleEventCallback 25 の 0x18eca36: 0xf98064_UIApplicationHandleEvent 24 の 0x2d5732: PurpleEventCallback 25 の 0x18eca36: 0xf98064CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION 26: 0xef86f7 in __CFRunLoopDoSource1 27: 0xef5983 in __CFRunLoopRun 28: 0xef5240 in CFRunLoopRunSpecific 29: 0xef5161 in CFRunLoopRunInMode 30: 0x2ccfa8 in -[UIApplication _run] 31: 0x2d942e in UIApplicationMain 32: 0x228c in main at /Users/pcasqueiro/Documents/PesquisaMapa/ main.m:14 33: 0x221d 開始

メインクラスの didFinishLaunchingWithOptions でクリーンアップが行われているようです。

私が間違っていることについてのアイデアはありますか?

ありがとう、パソコン

0 投票する
1 に答える
4481 参照

iphone - AppDelegateで(void)deallocが呼び出されるのはいつですか?

インスタンス変数はdealloc(以下に示すように)でリリースされることを理解していますが、正確にはいつ呼び出されますか?すべてのインスタンス変数はアプリの終了時に解放されますか、それとも不要になったときに個別に割り当てを解除するための受け入れられた方法がありますか?

0 投票する
3 に答える
179 参照

ios - [self.labelIBOutletリリース]と[labelIBOutletリリース]の使用

私はiPhoneSDKで良い記憶の市民になるために、少し記憶をいじっています。

しかし、私はまだ「self.something」と単に「something」の違いを理解するのに苦労しています。

私が理解している限り、「self.something」はクラスに「something」を求めることを意味しますが、私の考えには何か問題があります。例を見てみましょう:

私はメモリ解放に取り組んできました:

  1. [self.labelIBOUtlet release] ->クラッシュします
  2. [labelIBOUtlet release] ->そうではありません。

誰かが理由を教えてもらえますか?

ありがとうございました!

編集:

これは私がヘッダーファイルに設定した情報です:

0 投票する
4 に答える
102 参照

iphone - ビューオブジェクトを解放する

これを構築するときに、deallocで「baseView」宣言されていないエラーが発生するのはなぜか疑問に思っています。

}

allocを使用してビューを作成しましたが、baseViewを解放しようとしたときにエラーが発生する理由がわかりません。(viewDidUnloadでnilに設定しようとすると、同じエラーが発生します。

0 投票する
5 に答える
128 参照

objective-c - 変数を解放することについて疑問に思います

変数の3分の1だけをdeallocメソッドで解放する必要があると思います。そうですか?

0 投票する
3 に答える
2978 参照

iphone - NavigationController initWithRootViewController dealloc

UINavigationController を使用し、rootViewController を追加する非常に単純なコードがあります。いくつかの処理が発生した後、現在のView Controllerをポップオフして、別のものに置き換えたいと思います。これは正常に動作しているように見えますが、元のビュー コントローラーはロックを解除しません。私はそのdeallocにブレークポイントを設定しましたが、ヒットすることはありません。以下は私のコードです。なぜ起こるかわからない。startController を 2 回リリースしたかどうかをテストするためだけに、それはなくなります。

助けてくれてありがとう。

0 投票する
2 に答える
714 参照

iphone - UIViewController クラスのメモリの問題 - presentModalViewController

iPhone アプリケーションにメモリの問題があり、何が起こっているのかわかりません。

そのため、UIViewController から別の UIViewController に移行すると、アプリケーションのメモリ使用量が継続的に増加することがわかりました。「割り当て」ツールの「マーク ヒープ」ツールを使用しましたが、割り当てが解除されていないオブジェクトは UIViewControllers だけであることが判明しました。

より具体的に言うと、2 つの UIViewController を取得しました。1 つ目は PuzzleViewController という名前で、2 つ目は Options という名前です。アプリが起動すると、PuzzleViewController が表示されます。ここでヒープをマークしてベースラインを設定し、その後、オプション UIViewController を表示する [オプション] ボタンを押します。最初のものに戻り、再びヒープをマークします。これらの手順を何度も繰り返した後 (20 回程度 :D)、Heapshot ごとに約 22 個のオブジェクトが生き残っていることがわかりました。これらのオブジェクトのうちの 2 つは、私の UIViewControllers のインスタンスです。

何が起こっているのか、まったくわかりません。

Options UIViewController に切り替える方法は次のとおりです。

そして、PuzzleViewController に戻る方法は次のとおりです。

viewDidUnload 関数は適切に呼び出されますが、dealloc 関数は呼び出されません。

ありがとう、アンドレイ