__autoreleasing
キーワードの使用方法を理解していらっしゃると思います。Objective-C
です。__autoreleasingの使用方法の詳細が必要です
In which situations do we need to write the __autoreleasing ownership qualifier under ARC?
Use of __autoreleasing in code snippet example
、今にもかかわらず、私はまだ主なもの、目的を得ることができない、より理解:私は徹底的に以下の質問への回答を読みました。それはなぜですか?正確に私を混乱させるものを説明しましょう。コードを考えてみましょう:
@interface MyError : NSError
@end
@implementation MyError
- (void)dealloc
{
NSLog(@"My error dealloc");
}
@end
@interface ErrorHandler : NSObject
- (void)handleError:(MyError* __strong*)error;
@end
@implementation ErrorHandler
- (void)handleError:(MyError* __strong*)error
{
*error = [[MyError alloc] initWithDomain:@"Blabla" code:100500 userInfo:@{
NSLocalizedDescriptionKey : @"TestDescription"
}];
}
@end
- (void)test
{
MyError *error = nil;
ErrorHandler *handler = [ErrorHandler new];
[handler handleError:&error];
NSLog(@"Localized description %@", error.localizedDescription);
}
私は__autoreleasing
を使用しない場合は何が起こるかを確認するには、このコードを書きました。表示されるように、handleError
メソッドは、明示的にと宣言された参照への参照を受け入れます。そして何も起こらない。全て大丈夫。私はMyError
オブジェクトから情報を取得することができ、それは正常に割り当て解除されている、私はそれを参照してください。もし私が__strong
の代わりに__autoreleasing
を入れても何も変わりません。なぜそれが何も変わらないならば__autoreleasing
を使うのはなぜですか?これは私が理解していないものです。誰かが私に行方不明を見せてもらえますか?おかげで誰も
http://stackoverflow.com/questions/14554121/what-are-the-advantages-of-declaring-method-arguments-autoreleasingをチェックしましたか? –
はほんの数分前に見つかりました –