どこにも答えが見つからないようです。iOS 向けの Objective-C 開発で手動メモリ管理を使用しています。
16 進文字列から UIColor を取得するための便利な関数を作成しました。その中で、それは戻ります
[[UIColor alloc] initWithRed:... alpha:alpha]
どうやら特定のプラットフォーム (iOS 8 ~ 9 のデバイスがいくつかあります) では、オブジェクトは関数の終了時に破棄されるため、返された UIColor* は使用できません。だから今、私たちはそれをに変更しました
[[[UIColor alloc] initWithRed:... alpha:alpha] retain]
私の質問は、このオブジェクトを使い終わったら、2 回解放する必要があるかどうかです。割り当てのために1回、保持のために1回?私には非常に奇妙に思えますが、これはオンラインでどこにも見つかりません。
保持しないと、(一部のプラットフォームでは) 関数を終了するときに割り当てが解除され、関数が役に立たなくなります。保持した場合、終了時に 2 回リリースする必要がありますか?
編集:
「...、通常、受け取ったメソッドまたは関数内で有効であることが保証されています。その範囲を超えて有効であり続けたい場合は、保持またはコピーする必要があります。」
だから、変なことをしているわけではありません。ドキュメントには、関数の範囲を超えて「有効なままにしておきたい」場合は「保持する必要がある」と書かれています。@FreeNickname が提案したことを試してみます。それは最も理にかなっています。