重複の可能性:
xcode 4.5.1 では、ios ARC について
これが私のコードです(アーク)
self.string1=@"aaa";
__weak NSString *temp= self.string1;
NSLog(@"string1 %@",self.string1);
NSLog(@"temp %@",temp);
self.string1=nil;
NSLog(@"---after self.string1 = nil----");
NSLog(@"string1 %@",self.string1);
NSLog(@"temp %@",temp);
出力は次のようになるはずだと思います。
string1 aaa
temp aaa
---after self.string1 = nil----
string1 (null)
temp (null)
ただし、xcode4.5.1で実行すると混乱します
string1 aaa
temp aaa
---after self.string1 = nil----
string1 (null)
temp aaa
誰でも私を助けて、temp=@"aaa" の理由を教えてください (これは __weak であり、string1=nil の後に nil にする必要があります)
編集:こんにちは、皆さん。私たちは間違った方向に議論しますか?おそらく、NSLog は Core Foundation Functions Reference で定義されています。ARC には、NSLog と同様に、コア基盤関数のパラメーターに関するいくつかの規則があります。_weak オブジェクトをパラメーターとして NSLog に渡すと、_weak が _autorelease に変更されますか?