Objective-C块更改全局变量

时间:2013-11-09 00:48:47

标签: objective-c objective-c-blocks

dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    self.pageIndex++;
});

__weak someController *weakSelf = self;
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    weakSelf.pageIndex++;
});

我很困惑。哪个是对的?谢谢。

1 个答案:

答案 0 :(得分:2)

dispatch_after不会以“self”拥有的方式存储块,因此这里不存在保留周期的风险。

鉴于此,问题变成你想要发生什么?如果self应该保持活动状态以确保它的pageIndex可以增加,请使用强引用。如果索引只应在self仍处于活动状态时递增,请使用弱引用。

(编辑):此外,这里没有涉及全局变量。您可能想要了解全局变量,本地变量和实例变量之间的差异。