私はメモリ管理されたコードは初めてですが、アイデアはかなりよくわかります。
XCode のリーク ツールを使用してアプリを実行すると、カスタム オブジェクトをクリーンアップするだけで済み、たとえば動的に作成された配列をクリーンアップする必要がないことに気付きました。そのため、これらのデータ型は自動解放されると考えました。 (保持)を持つプロパティとして使用しました。
次に、何か奇妙なことに気付きました。次のように初期化された特定の配列でリークが発生していました。
NSMutableArray *removals = [NSMutableArray new];
しかし似たようなものではない
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:9];
さて、一方が「新規」で設定された理由は、0 ~ 99 の項目を含めることができるためです。一方、私が知っていたもう一方の項目は常に 9 であることがわかっていました。両方の配列が後でユーザーに基づいて同じメソッドに渡されるためです。メソッドの最後で解放しなかった場合はリークが発生し、解放した場合は例外が発生しました。
最初の配列を次のように変更しました
NSMutableArray *removals = [NSMutableArray arrayWithCapacity:99];
リークは発生せず、何もリリースする必要はありません。誰でも説明できますか?