問題タブ [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.

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

iphone - (非アトミック、保持)合成プロパティのリリース

私の質問は、プロパティのリリースに関する12の質問のように見えますが、探している正確な答えが見つかりません。

プロパティがretainで宣言されている場合:

それから

保持および解放操作でゲッターとセッターを生成します。わかった。

もちろん、プロパティはdeallocでリリースする必要があります。

だからそれはきれいです。

しかし、myStringを使用したことがない場合はどうなりますか?事前に初期化されていますか?私の意見では、myStringのretain-countは0になります。しかし、deallocでmyStringをリリースすると、myStringが減少し、アプリケーションがクラッシュしますか?しかし、それはクラッシュしません!

それを解放するためのよりクリーンな方法は次のようですか?

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

objective-c - 自動参照カウント(ARC)とretainCount

プロジェクトをARCを使用するように変換している最中で、特別な問題が発生しました。ネットワークからダウンロードされたファイルのキャッシュを管理するクラスがあります。各ファイルはiPhoneファイルシステムに保存され、関連するオブジェクトはそのマネージャークラスに保持されます。ファイルを使用したい他のオブジェクトは、私のマネージャーにキャッシュオブジェクトを要求し、ファイルが必要な限りそれを保持します。

しかし、時々、マネージャーはキャッシュをクリーンアップし、古いファイルを削除します。もちろん、その時点で使用中のファイルを削除するべきではありません。ARCの前は、関連するオブジェクトのretainCountを使用して次のことを検出しました。

これは完全に機能しました[はい、retainCountの信頼性の欠如に関する警告については知っていますが、私の経験では、retainCount> 1の場合、複数のオブジェクトがそれを保持していることを確認できます]

ただし、ARCでは、retainCountを使用できなくなりました。独自の保持カウントメカニズムを導入し、ファイルを使用するすべてのオブジェクトにファイルオブジェクトを明示的に保持および解放するように要求することができます。しかし、それはエラーが発生しやすく、まさにARCが解決することになっている種類のことです。

同じことを達成するためのより良い方法を知っていますか?

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

objective-c - UIViewController pushViewController の View Controller の保持回数が多い

次のコードを書きました。

2 つのログの結果は、順番に16です。これはどのように可能ですか?alloc メソッドを 1 回だけ呼び出し、コントローラーをスタックにプッシュした後に解放します。alloc-> +1、push-> +1、release-> -1 = 1 かどうか?

スタックからポップするときに、View Controller の割り当てを解除したいのですが..

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

objective-c - 目的 c の可変オブジェクトと不変オブジェクトのカウントを保持しますか?

出力 :dic1:2 dic2:4 dic3:1 dic4:3

変更可能なオブジェクトの保持カウントと不変オブジェクトの保持カウントの違いは何ですか?plsは私に解決策を与えます...

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

objective-c - RetainCount このインスタンスで使用してもよろしいですか?

RetainCount == 悪い

retainCountはタブーであり、信頼性が低く、予測不可能であり、一般的に使用すべきではありません。コードのどこにも使用していませんが、興味深い方法で使用している 1 つのクラスで見ました。

スレッドがキャンセルされるまで無期限に実行されるスレッドを実行するクラスがあります。問題は、スレッドが所有者の保持カウントを増やすことです。私の場合は、それをインスタンス化したクラスです。そのため、そのクラスを使い終わったとしても、クラスを管理している誰かがスレッドをシャットダウンすることを知っていない限り、そのインスタンスはまだぶらぶらしています。これは 1 つの解決策ですが、これがコードで見つけたものです。

これは賢い解決策ですが、どう考えればよいかわかりません。クラスの release をオーバーライドし、retain カウントが 2 かどうかを確認します。つまり、オブジェクトを存続させているのはスレッドだけかどうかを確認します(retain カウントが 2 から 1 に減らされようとしているため)。 ) スレッドを終了します (quitDispatchThreadスレッドが終了するまでブロックします)。

そう...

1 かどうかを確認するために、retainCount を信頼できますか?

retainCountそこにいくつかの自動リリースがあるかどうかわからないので、通常、人々は近づかないようにと言います。ただし、retainCount が 1 の場合、スレッドだけがそれを維持しているという事実がわかり、自動解放などが原因でretainCount がオフになる可能性があることを心配する必要はありません...

このコードの何が問題になっていますか?

削除しようとしましたが、実際には理にかなっているようです。他のオブジェクトは、私のクラスがスレッドを実行していることを認識する必要はありません。他のオブジェクトretainや、スレッドを所有しているオブジェクトreleaseでさえもautorelease、スレッドをシャットダウンすることを心配する必要はありません。

このコードは実際にはすっきりしていて、私は驚いています。

編集 :: NSThread がオブジェクトを保持している

NSThread を使用しているため、オブジェクトの保持カウントが増加しています。私のオブジェクトは でtargetselectorはスレッドが実行されるメソッドです。

initWithTarget:セレクター:オブジェクト:

指定された引数で初期化された NSThread オブジェクトを返します。

  • (id)initWithTarget:(id)ターゲットセレクター:(SEL)セレクターオブジェクト:(id)引数

パラメーター

目標

selector で指定されたメッセージの送信先オブジェクト。

セレクタ

ターゲットに送信するメッセージのセレクター。このセレクターは引数を 1 つだけ受け取る必要があり、戻り値を持たない必要があります。

口論

ターゲットに渡される単一の引数。ゼロかもしれません。

戻り値

指定された引数で初期化された NSThread オブジェクト。

討論

ガベージ コレクションされていないアプリケーションの場合、メソッド セレクターは、新しく切り離されたスレッドの自動解放プールを設定し、終了する前にそのプールを解放する役割を果たします。ガベージ コレクションされたアプリケーションは、自動解放プールを作成する必要はありません。

オブジェクトのターゲットと引数は、切り離されたスレッドの実行中に保持されます。それらは、スレッドが最終的に終了するときに解放されます。

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

objective-c - 追跡オブジェクトは呼び出しを保持します

オブジェクトを保持しているものを追跡するにはどうすればよいですか?dellocリストから削除したときに期待どおりに動作しないオブジェクトがあります。何かが保持カウントを増やしているのではないかと疑っています。そのため、オブジェクトの保持カウントが増えたときにコードに侵入する場所を理想的に作成する方法を知りたいと思います。

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

objective-c - 保持カウントを増加させるのは、alloc と init のどちらですか?

オブジェクトを作成して所有権を取得する必要がある場合は、次のように記述します

その後、someObjectの保持カウントは 1 に等しくなります。どのメソッドがカウントを増やしますか、allocまたはinitで、Apple のドキュメントのどこでこの動作が説明されていますか?

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

objective-c - 管理対象オブジェクトの参照数

クラスA(NSManagedObjectのサブクラス)のプロパティを持つクラス(NSManagedObjectのサブクラスB)がありますが、プロパティはそうではあり@synthesizeません。モデルとの間に@dynamic関係はありません。 ) 生きている。( dbから 最初にオブジェクトをフェッチしたとき、彼のプロパティはnullです) ABABA
AB

プロパティゲッターをオーバーライドするので、最初に呼び出されたときに、dbからオブジェクト Bをフェッチします。B

ここで、のフェッチ結果を保持する必要がありBますか?
NSManagedObjectContextが管理するオブジェクトを保持するのは良い考えではないと聞いたと思います。

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

iphone - 保持カウントが+1のリークされたオブジェクトを修正するにはどうすればよいですか?

次のコードでリークされたオブジェクトがあります。どうすれば修正できますか?[apiViewControllerリリース]を追加してみました。しかし、私がアプリを分析すると、私はまだ:を取得します

ここに画像の説明を入力してください

助けてくれてありがとう

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

iphone - Objectivec-参照カウント

5分までは、Objective cの参照カウントについての理解が優れていると確信していましたが、オブジェクトのretainCountをチェックし始めたとき、私が見たものを見て非常に驚きました。

たとえば、myViewControllerにはUITableviewがあります。

.hファイル

.mファイル

驚いたことに、入力は次のとおりです。

明らかにステップ1は保持カウントを1増やしますalloc

また、STEPTHREEで保持カウントが1増加することも知っています。addSubview

しかし、ステップ2で何が起こっているのでしょうか?なぜそれは保持数を増やしたのですか?
ARCとは何か関係がありますか?