ARC ライブラリを使用している非 ARC プロジェクトがあります。ライブラリ メソッドから返されたオブジェクトを解放する必要があるかどうか、私は混乱しています。次に例を示します。
- (void)test{
LibObject* obj1 = [[LibObject alloc] init];
LibObject* obj2 = [obj1 otherObj];
[obj1 release]; //should I release it?
[obj2 release]; //should I release it?
}
私の知る限り、オブジェクトが自動解放プールにある場合は、そのままにしておく必要があります。そうでなければ、私はそれをリリースする必要があります。
ただし、ARC文書には次のように記載されています
そのような関数またはメソッドから戻るとき、ARC は return ステートメントの評価の時点で値を保持し、次にすべてのローカル スコープを離れて、値が呼び出しの境界を越えて存在することを保証しながら、保持のバランスを取ります。最悪の場合、これには自動解放が含まれる可能性がありますが、呼び出し元は値が実際に自動解放プールにあると想定してはなりません。
このドキュメントは、オブジェクトが自動解放されているとは想定できないため、常にオブジェクトを解放する必要があることを暗示していますか?