在块内设置BOOL变量

时间:2014-06-03 11:25:06

标签: objective-c objective-c-blocks

我正在尝试设置一个BOOL值,该值在我的类中定义在一个块中,但我看不到能够设置它。这是代码。

 __weak __block SPTween *tween2weak = tween;
    __block BOOL buttonScroll2 = buttonScroll;

    tween.onComplete = ^{
        [Sparrow.juggler removeObject:tween2weak];
        buttonScroll2 = NO;
    };

我认为当我做buttonScroll2 = NO时,我所做的就是设置一个单独的变量而不是原始变量,但是如何从块内部获取原始变量呢?

1 个答案:

答案 0 :(得分:0)

你是对的,一旦buttonScroll的值被复制到buttonScroll2,对buttonScroll2的更改对原始buttonScroll没有影响。

如果buttonScroll是对象的实例变量,则应该能够使用__weak self模式访问它:

__weak __block SPTween *tween2weak = tween;
__weak typeof(self) weakSelf = self;
tween.onComplete = ^{
    [Sparrow.juggler removeObject:tween2weak];
    MyClass *strongSelf = weakSelf;
    strongSelf->buttonScroll = NO;
};