私はついに、オブジェクトを解放する必要があるかどうか、そして些細なアプリケーションで保持カウントをできるだけ低く保つ方法を理解しました(オブジェクトがすでに呼び出された追加の「保持」で戻ってくるかどうかを知ることによって)。したがって、NARCルールはその点でかなりうまく機能しています。
一方、retain
(通常は保持プロパティを使用して)assign
インスタンス変数を使用するかどうかに頭を悩ませることはできません。そこに経験則はありますか?私は2つしか知りません:
- クラス内(たとえば、init)でインスタンスを作成した場合は、インスタンスを保持して、で解放する必要があり
dealloc
ます。 - 代表者は割り当てられますが、保持されません
しかし、私が理解していないのは、別のインスタンスから渡したものを保持する必要があるかどうかです。保持カウントがゼロになり、バッグを保持したままにする(または多くの余分なバッグとメモリを保持したままにする)リスクがあることは知っていますが、これが起こらないようにアプリケーションをどのように整理する必要がありますか?
私はいくつかの関連する質問を見ましたが、一般的なものは何もありません。
私がここにいる間:に追加されたもの、UIWindow
またはUIView
私が個人的に保持していないものはどうですか?それらのスーパービューがすべてのスーパービューから削除された場合、「自然に」保持されたインスタンスの割り当てが解除されますか?