这是我的代码(弧)
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 是在核心基础功能参考中定义的。ARC 对核心基础函数的参数有一些规则,就像 NSLog 一样?我们将 _weak 对象作为参数传递给 NSLog,它会将 _weak 更改为 _autorelease?