__block BOOL myBool = NO;
__strong MyClass *ptr = self;
self.footer.defaultSelectedItem.selectionBlock = ^{
myBool = YES;
ptr = nil;
};
Это прекрасно работает, когда Build Configuration моя схема установлен в Debug, но я получаю EXC_BAD_ACCESS
когда я бегу с Release. EXC_BAD_ACCESS
происходит на следующей строкеиспользование переменных в блоке из параллельного объема
if(selectionBlock != nil) selectionBlock();
, но если я закомментируйте все строки внутри моего selectionBlock
то он работает без ошибок. Почему это выполняется в Debug, а не в выпуске?
FYI Я использую Automatic Reference Counting (дуга)
** EDIT в ответ на @RobNapier **
Исходный код, который работает в отладке является:
__block BOOL flag = NO;
__strong EventsView *ptr = self;
self.footer.defaultSelectedItem.selectionBlock = ^{
if(flag) return;
flag = YES;
[ptr backTUI:nil];
flag = NO;
};
Можно ли предположить из присутствия '__strong', что вы используете ARC? –
Хорошая точка. Да, я использую ARC. – Jacksonkr
Что такое "myObject = nil"? Возможно, вы имели в виду "ptr = nil"? Из вашего другого кода это выглядит так: «myObject» - это класс. –