iOS块函数调用两次

时间:2015-07-03 00:39:29

标签: ios objective-c

我有一个块功能定义如下:

@property (atomic, assign) bool callInProgress;

//in implementation:    

- (void)synchronize:(void(^)(void(^unlock)()))block {
    if (!_callInProgress) {
        _callInProgress = YES;
        [_tableView setScrollEnabled:false];

        block(^{
            [_tableView setScrollEnabled:true];
            _callInProgress = NO;
        });
    }
}

然后当我这样做时:

[self synchronize:^(void(^unlock)()) {
}];

我在[self synchronize..]处设置了一个断点,无论如何,断点都会被击中两次!如果我添加一个正文:

/*break point on this line*/ [self synchronize:^(void(^unlock)()) {
    NSLog(@"HERE");
    unlock();
}];

HERE打印ONCE但断点被击中两次!

任何想法为什么?

1 个答案:

答案 0 :(得分:5)

当您到达同步调用时,断点被点击一次,而当您进入回调块时,断点被点击一次。两者都在同一条线上。