問題タブ [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 - 割り当てられたオブジェクトまたは保持されたオブジェクトを何回解放しますか?
iPhoneゲームを作っています。割り当てられている、または保持されているすべてのオブジェクトを解放したいと考えています。関数では、dealloc
そのようなオブジェクトをすべて解放していますが、オブジェクトがまだ割り当てられていないときにオブジェクトを解放してしまうことがあることに気付きました。retainCount
そのため、リリースする前に、その値がゼロより大きいかどうかを確認する必要があると考えました。
私の質問は:
retainCount
がゼロより大きいかどうかを確認してからリリースするだけですか?
また
何度でも解放するべきかretainCount
ご協力いただきありがとうございます!
objective-c - メソッドを呼び出すメソッド: 自動解放の基本?
このトピックを完全に理解したと思ったとき、私は基本に戻りました。
(たとえば)を使用して、自動解放されたオブジェクトをインスタンス化するメソッドがありますstringWithFormat
。
次に、このメソッドを別のメソッドから呼び出し、さらに別のメソッドを呼び出すたびに、この autoreleasedNSString
を返すたびに、階層の各レベルで呼び出します。コードは正常に機能し、NSString
インスタンスは階層の各レベルで損なわれていません。
インスタンスは自動解放されるため、コール スタックの任意の時点で突然 0 になる可能性があると考えretainCount
ました (つまり、メソッドの 1 つが解放されたオブジェクトで動作している可能性があります)。このオブジェクトに依存できないというのは本当ですか?
編集:質問があまり明確ではなかったことを認識しています。ごめん。つまり:
ios - 保持カウントによるオブジェクトの解放
ビューを何度も解放すると問題が発生します。理論的には単純ですが、uiview を uiview のサブクラスである uiview に移動し、アニメーション化するなど、簡単に修正できるものではないためです。10% しかクラッシュせず、特定の条件下でのみクラッシュし、これらの条件下でも 30% の確率でしかクラッシュしません。
言い換えれば、ちょっと複雑です。私の dealloc メソッドでは、この UIView の保持カウントが既に 1 (ビューが解放されると解放される) であるため、再度解放するべきではありません。だから私がしたことはこれです:
リリースされたクラッシュと一致することが通常呼び出されますが、常にではなく、時々クラッシュすると予想されるときにほとんど発生します。このコードでリークをチェックしましたが、リークすることはありません。
さて、実際の質問です...保持カウントのために何かをリリースするのは間違っていますか? これを修正するためにさまざまな方法を試しましたが、これまでのところ、信頼性が高く、漏れのない唯一の方法です。
編集:そうでない場合、あるUIViewを別のUIViewにコピーするより良い方法は何ですか?
最初に mainView を解放してから newView で copy を呼び出してみましたが、これはクラッシュします。上記も完全に機能しますが、コード内のどこにもリリースされていないにもかかわらず、保持カウントが予想よりも 1 少ない場合があります。
objective-c - Objective-Cリリース
DNS.hにこのクラスがあります
次に、実装ファイルDNS.mに、それを解放するメソッドがあり、exec badaccessmemoryエラーが発生します。これはメソッドであり、NSXMLParserDelegateプロトコルに準拠しています
最初に考えたのはnilかもしれませんが、実際にはメソッド内でnilかどうかをチェックして使用し、解放します。
それはretainプロパティと関係がありますか?THX。
iphone - @Property UISwitch を TableView に追加すると RetainCount の問題が発生する
私はUISwitchsとUITextFieldsでこれをやっています...
クラス内のいくつかの異なるメソッドでその値にアクセスしたいので、ヘッダー ファイルで UISwitch を Property として宣言しました。
次のコードを使用して、UISwitch を TableViewCells の 1 つに追加しています。
そのままで、retainCounts はいたるところにあります。mySwitch Retain は、セルが画面に配置されるまでに 2 であり、スイッチをタップするたびに保持カウントが増加し、4 になるまで保持されているように見えます。
明らかに私は何かが欠けています。誰かが私を正しい方向に向けることができれば、それは大歓迎です。
objective-c - ObjectiveCのリターン-1でカウントを保持します
私はObjectiveCを初めて使用し、3つのオブジェクトを含むNSMutableArrayを持っているので、配列のretainCountを出力しようとします。最終的なretainCountが-1を返すのはなぜですか?ありがとう
コンソールからの結果:
objective-c - セルのcontentViewで「subviews」メソッドを呼び出すと、保持カウントが増加します
ここで何が起こっているのかわかりませんが、initメソッドに次のコードがあります。
スーパービューはオブジェクトを保持しているので、game1CustomEntityInfoControlをリリースする必要があることはわかっていますが、今はそのままにしておきます。
次に、layoutSubviewsメソッドに次のようになります。
これは出力です:
2010-10-24 15:14:08.598算額[8592:207]割り当て前の初期化でカウントを保持:0
2010-10-24 15:14:08.603算額[8592:207]割り当て後の初期化でカウントを保持:1
2010-10-24 15:14:08.611算額[8592:207]スーパービューに追加した後、初期化でカウントを保持:2
2010-10-24 15:14:08.616算額[8592:207]レイアウトに入るとすぐにカウントを保持サブビュー:2
2010-10-24 15:14:08.621 Sangaku [8592:207] contentViewでサブビューを呼び出した後、layoutSubviewsのカウントを保持します:3
出力の最後の行を見てください。保持カウントはどのようにして3になりましたか?サブビューは、自動解放として返される割り当てを内部的に実行しますか?
ありがとう
iphone - NavigationController によってプッシュされた場合、ViewController の保持カウント +4
tableViewなどからNavigationcontrollerのスタックにプッシュされたときに、viewControllerのretainCountが4増加するのはなぜだろうと思っていました。どのような依存関係が作成されますか?
iphone - Objective-C は、どのオブジェクトが別のオブジェクトを保持しているかを判断します
iPhone でメモリ リークの問題が発生し (想像してみてください)、保持カウントが 10 のカスタム オブジェクトがあります。
特定のオブジェクト インスタンスの保持カウントの増加を引き起こしたコードを知る方法はありますか? それが重要な場合、私はGHUnitを使用しています。
objective-c - NSMutableArray削除オブジェクトは参照数を増やしますか?
iOS静的ライブラリでメモリリークを引き起こしているコードがいくつかあります。Instrumentsからのオブジェクトの存続期間は次のとおりです。
これがのコードです[AbstractColumn addColumnListener:]
そしてのために[AbstractColumn removeColumnListener:]
からオブジェクトを削除すると、オブジェクトをデクリメントするのではなく、保持カウントを増やすNSMutableArray
ように見えます。他の誰かがこの問題を抱えていて、解決策を知っていますか?