Я столкнулся с этим сценарием, когда мое приложение разбилось с помощью exec_bad_access, когда я вызываю блок на объекте nil. Я смог исправить проблему, добавив условие if, но я хочу знать, почему вызывающий блок на объекте nil вызывает bad_access?Вызывающий блок на объекте nil дает exc_bad_access
@interface CustomView :UIView
@property (nonatomic, strong) UIImage* sourceImage;
@property (nonatomic, copy) void(^doneSwipingBlock)();
- (void)testMethod;
@end
//Another Class
//Sample Code (this is not the actual code but shows the crash
CustomView view = nil;
view.sourceImage = [UIImage imageNamed:@"image.png"]; //no error as view is nil
[view testMethod]; //no error as view is nil
view.doneSwipingBlock(); //Crashes here
/*
//This works fine
if (view.doneSwipingBlock) {
view.doneSwipingBlock();
}
*/
Отсутствует '*' в декларации 'CustomView view'. Вы уверены, что код, который сбой, скопирован в это сообщение дословно? –
@IanMacDonald: он говорит: «// Пример кода (это не настоящий код, но показывает крах», так что это явно не так. – zneak