Я новичок в этом сайте, я надеюсь, что вы можете помочь.
Я получаю ошибку EXC_BAD_ACCESS из следующего кода в функции ():
typedef int (^BlockDef)();
BlockDef getBlockDef(int d)
{
BlockDef def = Block_copy(^()
{
return d;
});
return def;
}
void function()
{
BlockDef def1 = getBlockDef(1);
BlockDef def2 = getBlockDef(2);
printf("%d\n",def1());
printf("%d\n",def2());
NSMutableArray * arr = [NSMutableArray array];
[arr addObject:def1];
[arr addObject:def2];
printf("%d\n",((BlockDef) [arr objectAtIndex:0])()); // **** EXC_BAD_ACCESS here
printf("%d\n",((BlockDef) [arr objectAtIndex:1])());
}
Этот код работает без проблем в iphone, но не в ipad.В чем может быть проблема?
Кроме того, в ipad, когда я удаляю вызов Block_copy, он успешно проходит через ту же строку.Это странно, так как не скопированная функция не может быть возвращена или не должна вызываться (в iphone я получаю EXC_BAD_ACCESS при первой печати в этой ситуации).