from: ARC の下に __autoreleasing 所有権修飾子を記述する必要があるのはどのような場合ですか?
- ( BOOL )save: ( NSError * __autorelease * );
次にコンパイラは、__autoreleasing に設定された一時変数を作成する必要があります。そう:
NSError * e = nil;
[ database save: &error ];
次のように変換されます。
NSError __strong * error = nil;
NSError __autoreleasing * tmpError = error;
[ database save: &tmpError ];
error = tmpError;
さて、変換されたコードは問題なく動作するようです。最後に、効率が「少し」(非常にわずか)であるにもかかわらず、適切に機能することを期待していました。では、わざわざ自動解放を指定する必要はありません。
より正確には。__autoreleasing
ポインターをポインターに渡すときに使用する必要があることを理解しています。しかし、ほんのわずかなパフォーマンスの向上だけが得られたとしたら、それでは何の意味があるでしょうか。