問題タブ [retaincount]
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 - addSubview増分はカウントを保持しますか?
私はそれをテストしました、そしてそれはそうするように見えます。だから私の質問は、それは常に保持カウントを増やすのですか?
だから私はいつもこのようなことをします:
私は実際にメモリリークをしていますか?
このコード@property (nonatomic, retain) UILabel *ingredientsTextLabel;
でインスタンス化するグローバルプロパティがあります。viewDidLoad
名前付きのプロパティがあり、ヘッダーにそのプロパティがないため、getterとsetterはありません。私の中でviewDidLoad
:
これでうまくいくと思ったので、deallocでリリースできますingredientsTextLabel
が、保持カウントは2なので、addSubviewの後でiもリリースする必要がありますか?私はこれが起こることに気づいていませんでした!:(
objective-c - 保持カウントが増加または減少する条件
オブジェクトはカウントを保持し、2番目の値(またはオブジェクト)を割り当てるとカウントを増やすことができることを読みました。
誰かがretainCountが増加または減少する基本的な条件についてのアイデアを教えてもらえますか(retain、alloc、releaseなしで)...
iphone - 同じ関数に割り当てが 1 つしかないオブジェクトに 5 つの割り当てがあります
popOver にメニュー (tableView で構成される) のみを表示する関数を作成しています。
これはソースコードです:
//この時点で保持カウントは 1 です
私が抱えている問題は、テーブルビューをロードするために使用されたメモリが解放されないことです。私のアプリは、クラッシュするまでメモリ内で成長し続けます。
searchNav の割り当てを 1 つだけ行っている場合、それを popOver に割り当てた後、reatin カウントが 5 になるのはなぜですか?
助けてください。
iphone - Objective-c - ビューを変更してもカウントを保持してゼロにします
次のように、1 つのビューコントローラーで UIImage と UIImage ビューを宣言しました。
.h ファイル内:
.m ファイル内:
別のビューでは、その値を設定します。
このメソッド内では、itemImageView の保持カウントは 2 です。
しかし、プロパティと合成を配置したビューに戻ると、保持カウントが 0 で、オブジェクトにアクセスできません。
何が起こっているのですか?
iphone - インスタンス変数にアクセスできません
ここに重大な問題があります... カスタム オブジェクトのインスタンス変数を NSLog しようとすると、ECX_BAD_ACCESS が発生します。次の関数は、ViewController で呼び出され、payload
URL から取得された文字列データを保持します。
ここまでは順調ですね。initWithWithVCard 関数は次のとおりで、theVCard
@ theVCardN
implementation で定義され、(.h) で @property (nonatomic、retain) としても設定されます。
theVCardN
ViewControlleraVCardViewController
内のオブジェクトにアクセスすると、ViewDidLoad
すべてが魅力的に機能します。そのオブジェクトのデータでいくつかのラベルを設定しました。
theVCardN
次に、ビューのボタンに接続されている IBAction から呼び出される関数内からインスタンス変数にアクセスしようとすると、デバッガ コンソールで EXC_BAD_ACCESS エラーが発生します。インスタンス変数からデータを取得しようとする関数は次のとおりです。
NSLog をtheVCardN
呼び出す直前の RetainCounter は「1」を出力します。NSLog 行は、デバッガー コンソールで EXC_BAD_ACCESS を返します。
何か案が ?
iphone - copyWithZoneの戻り値の所有権と保持カウント
copyWithZoneに関するアップルのドキュメントを読みました:
「返されたオブジェクトは、それを解放する責任がある送信者によって暗黙的に保持されます」。
だから私がこれを書くと:
そして私は電話します:
obj
保持されますか?自動リリースを設定しない場合、保持カウントはどうなりますか?
objective-c - -retainCount を使用する場合
これまでどのようなシチュエーションで使用されていたのか-retainCount
、最終的にはどのような問題が発生するのか教えていただきたいです。
ありがとう。
iphone - なぜ保持数が非常に多いのですか?メモリ管理
私は自分のアプリをさかのぼって、すべてのメモリの問題を処理し、メモリ管理について調べてきました。[objectretainCount]を使用してメモリ割り当てを追跡し始めました。私はカウントが本当に奇妙だと思っているので、これは信頼できるのでしょうか?
誰かが次のことを説明できますか?
これはアプリデリゲートであり、空のmainViewControllerは違いがないことを覚えておいてください。initWithRootViewControllerによってカウントが増加していますが、追加する別の方法がわかりません。
そしてこれがログです〜
2011-01-17 19:47:21.278 ANA[5653:207] 3
2011-01-17 19:47:21.282 ANA[5653:207] 4
2011-01-17 19:47:21.286 ANA[5653:207] 7
2011-01-17 19:47:21.287 ANA[5653:207] 12
2011-01-17 19:47:21.301 ANA[5653:207] Load View
これらのプロパティを変更したり、navigationControllerを参照したりすると、保持カウントが急増する理由がわかりません。
自動リリースなしで手動でリリースしましたが、結果は同じです。基本的に私はそれを理解していません、そしてretainCountコマンドが信頼できるかどうか疑問に思います、なぜなら私がこれを理解できないなら、私は他の場所でメモリの問題をデバッグできないと思うからです...
iphone - NavigationControllerなしでサブビューを追加する場合は、ViewControllerを適切に解放します
ナビゲーションコントローラー上にないサブビューとしてViewController.viewを追加すると、ViewControllerを適切に作成および破棄できないことがよくあります。
例えば:
これは、コントローラーのないビューであり、ユーザーが操作する必要のあるUIControlがない場合に最適です。ただし、そのビューのビューコントローラにメッセージを送信すると、メッセージがメモリに存在しなくなるため、EXEC_BAD_ACCESSが発生します。
これはメッセージの送信時に機能しますが、メモリリークであり、静的アナライザーによってキャッチされます。
現在のViewControllerのプロパティとして設定すると機能する場合があります。しかし、不明な数のMyViewControllerを使用して束を作成し、それらをUIScrollViewのようなものに追加する必要がある場合は、どちらも機能しません。
myTmpViewControllerにユーザー操作などがあると、クラッシュします。これを追加して適切にリリースするにはどうすればよいですか?
objective-c - 意図的に過剰にリリースしても、オブジェクトの保持カウントが 1 を下回ることはありません
一部のオブジェクトの保持カウントをチェックしています
意図的に「リリース」呼び出しを追加しても、取得できる最小値は「r = 1」のようです
dealloc
オブジェクトのメソッドに「release」および「NSLog」テストコードを入れようとしても、「r = 1」制限は保持されます 。
Cocoa ランタイムは、サンプル プログラムの最後で (GC なしで) 「EXC_BAD_ACCESS」でクラッシュする前に、「r = 1」までの余分なリリースを無視しているようです。
私の唯一の説明 (推測) は、オブジェクトにアクセスするには r >= 1 が必要だということです。そして、Cocoa ランタイムは、オブジェクトの保持カウントが途中で 0 になるのを控えようとします。
私が間違っている場合、誰かが私を確認または修正できますか?