app*_*ter 0 objective-c ios automatic-ref-counting
可能重复:
在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);
Run Code Online (Sandbox Code Playgroud)
我认为输出应该如下:
string1 aaa
temp aaa
---after self.string1 = nil----
string1 (null)
temp (null)
Run Code Online (Sandbox Code Playgroud)
但是,当我在xcode4.5.1中运行它时,它让我感到困惑
string1 aaa
temp aaa
---after self.string1 = nil----
string1 (null)
temp aaa
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,并告诉我为什么temp = @"aaa"(它是__weak,在string1 = nil之后它应该是nil)
编辑:大家好.我们会以错误的方向讨论吗?也许NSLog是在核心基础功能参考中定义的.ARC对核心基础功能的参数有一些规则就像NSLog一样?我们将_weak对象作为参数传递给NSLog,它会将_weak改为_autorelease吗?