【发布时间】:2016-10-29 13:14:51
【问题描述】:
int anInteger = 42;
void (^testBlock)(void) = ^{
NSLog(@"Integer is: %i", anInteger);
};
anInteger = 84;
testBlock();
Integer is: 42
这是来自 Apple 官方指南的示例。
现在,对于对象值,很容易理解,它保持对它的引用。所以后来,当它的原始引用更改为指向其他东西时,或者只是被破坏了。这个引用还在,所以引用计数不会为零,会保留原来的值。
但是,对于上面的示例代码,它不是一个对象。该块保留对它的引用,然后值更改为 84。我想这是对自身的更改而不是其副本,这意味着指针指向的值已更改。怎么还是42?
【问题讨论】:
标签: objective-c