6
第一代码和输出:的ObjectiveC:使用的NSString和__weak当奇怪的行为与ARC
NSString *text = @"Sunny";
__weak NSString *string0 = text.lowercaseString;
__weak NSString *string1;
string1 = text.lowercaseString;
NSLog(@"%@, %@", string0, string1);
输出:
(null), sunny
但经过我移动声明的string1
的text
以上,输出是不同的。下面是代码:
__weak NSString *string1;
NSString *text = @"Sunny";
__weak NSString *string0 = text.lowercaseString;
string1 = text.lowercaseString;
NSLog(@"%@, %@", string0, string1);
输出:
sunny, sunny
我很困惑与不同的输出:
- 为什么
string0
和string1
是在第一种情况有什么不同? - 为什么第二种情况的输出与第一种情况不同?
更为奇怪的是,第一种方案给出正确的输出,如果你通过保持一个断点运行,然后通过行执行行。但是,如果你删除断点,它会给出'null'。 – Gandalf