問題タブ [manual-retain-release]
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.
objective-c - Objective-C 変数をいつ解放するかを知る簡単なルールはありますか?
Objective-C を使用する際に、変数を解放する適切なタイミングを理解するのに役立つ経験則はありますか?
objective-c - プロジェクト内の単一のファイルに対してARCを無効にするにはどうすればよいですか?
私は自分のプロジェクトでARCをうまく使用しています。ただし、現在ARCのルールがもう少し壊れやすいファイル(単体テストやモックオブジェクトなど)に遭遇しました。このオプションを見つけることができませんでしたが、ファイルごとにARCを無効にする方法があったと聞いたことを思い出します。
これは可能ですか?ファイルごとにARCを無効にするにはどうすればよいですか?
objective-c - 参照カウントまたは保持カウントの問題 (メモリ管理)
以下のコードは問題なく動作します。確認のためにシステムで実行できます。
私の質問は、ご覧のとおり、dealloc メソッドは保持カウントがゼロに達した場合にのみ呼び出されるということです。つまり、RetainTracker オブジェクト用にメモリが解放されます。ただし、問題は、dealloc メソッドで保持カウントをログに記録すると、依然として保持カウントが 1 と表示されることです。これはなぜですか?
これが私のコードです:
ログは次のとおりです。
objective-c - 2回リリースする必要がありますか?
どこにも答えが見つからないようです。iOS 向けの Objective-C 開発で手動メモリ管理を使用しています。
16 進文字列から UIColor を取得するための便利な関数を作成しました。その中で、それは戻ります
どうやら特定のプラットフォーム (iOS 8 ~ 9 のデバイスがいくつかあります) では、オブジェクトは関数の終了時に破棄されるため、返された UIColor* は使用できません。だから今、私たちはそれをに変更しました
私の質問は、このオブジェクトを使い終わったら、2 回解放する必要があるかどうかです。割り当てのために1回、保持のために1回?私には非常に奇妙に思えますが、これはオンラインでどこにも見つかりません。
保持しないと、(一部のプラットフォームでは) 関数を終了するときに割り当てが解除され、関数が役に立たなくなります。保持した場合、終了時に 2 回リリースする必要がありますか?
編集:
「...、通常、受け取ったメソッドまたは関数内で有効であることが保証されています。その範囲を超えて有効であり続けたい場合は、保持またはコピーする必要があります。」
だから、変なことをしているわけではありません。ドキュメントには、関数の範囲を超えて「有効なままにしておきたい」場合は「保持する必要がある」と書かれています。@FreeNickname が提案したことを試してみます。それは最も理にかなっています。