問題タブ [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.
iphone - iPhone - 複数の UIViewController のリリース
メインの UIViewController (PMGameViewController.h) は、アプリのデリゲートが呼び出すファイルです。
メインの UIViewController (PMGameViewController.m) にはいくつかのボタンがあります。ボタンが押されると、insertSuvbiew を実行し、その上に別の UIViewController をアタッチします。ミニゲームが終わったら、単純に removeFromSubview を実行します。これにより、上に挿入した UIViewController が削除され、メイン メニューが表示されます。パーフェクトこれは私が欲しいものですが...
removeFromSubview を実行した後、objectalloc が削除されません。その UIViewController のメモリを解放するにはどうすればよいですか。メインの UIViewController (PMGameViewController.m) を逆参照して、削除されたことを通知し、UIViewController メモリを解放する方法がわかりません。
サブビューを挿入する方法は次のとおりです
iphone - iPhone-dealloc-リリースvs.nil
経験のある人がこれをもう少し説明できるかどうか疑問に思います。私は例を見てきました...
....(void)dealloc内。
違いは何ですか?一方は他方よりも優れていますか?最善の方法は何ですか?
個人的にretainCountテストを実行すると、nilが3から0にカウントを落とすのを見ましたが、releaseは3から2にしかカウントを落とさないのです。
iphone - 複数のビュー/サブビューを持つ iPhone アプリ: メモリの割り当てが解除されていません
このリンクで説明されているものに基づいたフレームワークに連続したビューをロードする iPhone アプリケーションがあります(基本的にはViewController
、メソッドを使用して追加のビューをロード/削除するメインdisplayView
)。私のアプリケーションでは、NIB を使用しています(例のリンクではコード化されたビューを使用しています) ViewControllers
。
Instruments でのデバッグではリークは表示されませんが、セクション (View.xib を含む ViewController) に出入りすると、nib はメモリ内に残るため、数回のイン/アウトの後、メモリが蓄積し始めます。
ペン先がアンロードされていないことはわかっています。これは、ほとんどプログラムで作成されたもの (IB には何もない) と、IB で作成された画像とボタンがあるためです。大きい方が最初にロードされ、小さい方が次にロードされます。インスツルメントへの割り当てが減少することが予想されます。
どうすればこれを防ぐことができますか?
私の構造は次のとおりです。以下にいくつかのコメントがあります。
このコントローラは、サブビューのロード/削除を処理します:
case
私が持っている「詳細」 と同じ数がありViewControllers
ます(現在は3つcase
ですが、これは10以上になります)。この構造の目的は、アプリケーションのある「セクション」から別の「セクション」に簡単に移動することです (NavBar コントローラーまたは TabBar コントローラーは、私の特定のニーズには合いません)。
に注目しNSLog
てdealloc
ください。これは呼び出されています (コンソールで確認できます) が、nib に必要なメモリが解放されていません (新しい nib がロードされるため、Instruments はセクションを離れるときにメモリ割り当ての増加を示します)。
どんな助けでも大歓迎です。何百万もの異なることを試しましたが、ペン先をアンロードできません。
objective-c - Objective C-グローバル静的変数の割り当てをどこで解除しますか?
または、+(void)initializeの反対は何ですか?
これが私の状況です:
クラスUnitがあり、その-(id)initWithName:関数は、Unit.mファイルで次のように定義された遅延作成されたグローバルNSDictionaryからデータを取得します。
static NSMutableDictionary * unitLibrary = nil;
[unitLibraryリリース]はどこに電話すればよいですか?
iphone - メモリ リークの検出に関する問題
みなさん、メモリリークを見つけるのに苦労しています。それらを解放すると、すべての保持カウント= 0になりますが、それでも次のコードからのリークにフラグを立てています。
}
ピア ピッカーをキャンセルして、接続先が見つからない場合は、このコードを実行して、ピア ピッカーに関するすべてを削除します。
}
どこかで、コードが漏れていて、どこにいるのか一生わかりません。これに関するヘルプは驚くほど高く評価されます。
iphone - iPhone のメモリ管理: アプリの終了時に保持されたオブジェクトをクリーンアップして解放する必要はありませんか?
以下は本当ですか?
アプリが終了しようとしているときに、保持されているすべてのオブジェクトで release を呼び出してメモリをクリーンアップする必要はありません。iPhone OS は、アプリを起動したときにアプリに割り当てたメモリを再利用するためです。これは、アプリが自分で正しくクリーンアップすることに頼るよりも速くて安全です。これを確認するには、NSLog 呼び出し (またはデバッガー ブレークポイント) をアプリケーション デリゲートの dealloc メソッドに配置し、呼び出されないことを確認します。
そのため、アプリが終了しようとしているときにクリーンアップしても意味がありません。さらに、OS がアプリを消去するまでの時間は非常に限られているため、クリーンアップに時間を無駄にしないでください。ゲームやその他の関連するものを保存することに集中してください。
iphone - UIView インスタンス変数の「交換」 - 「前の」ビューの割り当てを解除できません
どうにかして iPhone ゲームのレベルビューを整理したいのですが、( Object Allocations を展開しないと) できません。私は自分のコードの真の「スケルトン」を作成しました (このゲームには 2 つのレベルがあり、目標は iPhone ディスプレイをリリースすることです)。以前のレベルの割り当てを解除できないため、Instruments は BGTangramLevel インスタンスの増加を示しています。
それを見てください。設計に関するいくつかの役立つアイデアが必要です (それに関する私の 3 番目の質問)。
viewcontroller.h
viewcontroller.m
BGタングラムレベル.h
BGタングラムレベル.m
それで、私は何をすべきですか?返されるレベル インスタンスを自動解放するようにマークし、removeFromSuperview の後に currentLevel を解放し、currentLevel プロパティを (非アトミック、割り当て) 方法で合成しようとしましたが、オブジェクト割り当てはまだ大きくなります。通知を避けることはできますか? 私は立ち往生しています。
iphone - 複数の UIView、割り当て解除と保持
写真アプリと同様の方法で UIScroller に複数の UIImageView を表示するための小さなアプリケーションがあります。アイテムを選択すると、(配列に追加された) 写真の XML ドキュメントを解析し、画像を表示する UIViewController を追加する TableView があります。
問題は、タブバー項目をクリックすると、画像を表示するビューを削除し、使用されているすべてのメモリの割り当てを解除した後、TableView に戻る必要があるタブバーコントローラーがあることです。問題は、これを達成する方法を理解できないことです。記憶のルールの理解不足なのか、私にはわかりません。
これが私が問題を抱えているプロセスです。
テーブル ビュー コントローラー
これは、parserDidEndDocument: の後に呼び出されます。backToMenu は、タブ バー アイテムから呼び出されます。
アルバム ビュー コントローラー
これは、UIScroller と UIPageControl を含む UIViewController です。いくつかの ImageViewControllers を追加します。
ImageViewController
これには1つの方法があります。UIImageView の追加を処理する ImageView と呼ばれるサブクラス化された UIView を追加します。
backToMenu 関数は、AlbumViewController を削除/割り当て解除し、すべての子サブビューで delloc を呼び出して、使用済みメモリを解放することになっています。
どこが間違っていますか?どんな助けでも大歓迎です。
ありがとう。
iphone - UIScrollViewのいくつかのUIImageViewとクラッシュ
作成した写真表示アプリケーションに問題があります。
UINavigationControllerを内部に持つUITabBarControllerがあります。UINavigationControllerは、最初にUITableViewを表示します。選択すると、NSArrayの写真とともに別のUIViewController(個別のフォトアルバム)がプッシュされます。このコントローラーには、UIImageViewが存在するいくつかのUIViewControllerを表示するUIScrollView/UIPageControlが含まれています。
アプリケーションは最初はうまく機能します。アルバムごとに各画像が正しく読み込まれ、ナビゲーションバーから戻ることができます。問題は、約180枚の画像の後で、アプリがメモリ警告をスローし始め、最終的に「プログラム受信信号:「0」。警告:check_safe_call:現在のフレームを復元できませんでした」をスローしてクラッシュすることです。私がチェックしたところ、リークがなく、すべてのdeallocが正常に呼び出されているため、非常にイライラします。Deallocメソッドは、保持されているすべてのプロパティを解放し、それらをnilに設定します。
楽器をチェックインすると、すべてのアルバムが表示された後、メモリ使用量が徐々に増加していることが示されます。一部のメモリは解放されますが、すべてではありません。たとえば、アルバムが1MBを使用して0.9MBを表示する場合、リリースされる可能性があります。
どんな助けでもいただければ幸いです。これは私がリリースする前の最後の問題です。
編集:これは基本的なプロジェクトファイルへのリンクです。http://www.mediafire.com/?nztrd1yhzoo
AlbumsViewController(個々の「albumviewcontroller」をプッシュします)
AlbumViewController
ImageViewController
objective-c - これら2つのdeallocメソッドの違いは?
オブジェクトが他の 1 つのオブジェクトで構成される複合オブジェクトであるため、dealloc メソッドをオーバーライドしています。
私はもともとこのdeallocメソッドを持っていました:
本を見た後、私は別の答えを見ました:
両方が同じように機能するかどうか疑問に思っています。
ありがとう、
ニック