Разработка приложений для ipad: Block_copy не работает - PullRequest
1 голос
/ 29 ноября 2010

Я новичок в этом сайте, я надеюсь, что вы можете помочь.

Я получаю ошибку 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 при первой печати в этой ситуации).

1 Ответ

1 голос
/ 29 ноября 2010

Когда вы говорите iPad, вы имеете в виду 3.2?Если это так, это не сработает.В версии 3.2 есть интерфейс API с половинными законченными блоками, который позволит вам делать все, кроме блоков копирования.

Если ваш iPad работает на 4.2, но это все еще не работает, сообщите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...