__block BOOL myBool = NO;
__strong MyClass *ptr = self;
self.footer.defaultSelectedItem.selectionBlock = ^{
myBool = YES;
ptr = nil;
};
当我的 Scheme 的Build Configuration设置为Debug时,这工作得很好,但是当我使用ReleaseEXC_BAD_ACCESS
运行时,我得到了一个。发生在以下行EXC_BAD_ACCESS
if(selectionBlock != nil) selectionBlock();
但是如果我注释掉我里面的所有行,selectionBlock
那么它运行没有错误。为什么它在 Debug 中运行而不是在 Release 中运行?
仅供参考,我正在使用自动引用计数(弧)
** 编辑以回应@RobNapier **
在调试中工作的原始代码是:
__block BOOL flag = NO;
__strong EventsView *ptr = self;
self.footer.defaultSelectedItem.selectionBlock = ^{
if(flag) return;
flag = YES;
[ptr backTUI:nil];
flag = NO;
};