EXC_BAD_ACCESS при отправке сообщений в блоки на 4.0 -> 3.2 - PullRequest
1 голос
/ 16 июня 2010

Я уже некоторое время использую http://code.google.com/p/plblocks/, чтобы получить поддержку блоков в нашем приложении для iPad 3.2. Недавно мне указали, что вы можете настроить xcode для использования 4.0 SDK, а затем установить для цели развертывания ОС 3.2.

Если я это сделаю, работает следующий код.

void (^world)() = ^ {
    NSLog(@"Hello World");
};

NSLog(@"Hello?");

world();

Однако каждый раз, когда я отправляю сообщение в блок, я получаю EXC_BAD_ACCESS. Например, если я добавлю следующую строку:

void (^acopy)() = [world copy];

Это проблема, так как вы должны копировать блоки, чтобы они могли сохранить свою область видимости позже. Есть идеи, почему блоки будут работать, а сообщения - нет? Я пропускаю некоторые настройки или что-то? Я ошибаюсь по поводу необходимости копирования?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Кажется, вы все еще можете использовать Block_copy(). Я не знаю, почему PLBlocks сможет использовать Objective-C, а встроенные компиляторы - нет.

0 голосов
/ 16 июня 2010

Вот вступительная статья:

http://developer.apple.com/mac/articles/cocoa/introblocksgcd.html

Там написано:

Важно, что блочные объекты заложены таким образом, что они также Объекты Objective C, если это время выполнения подарок.

Я не могу понять, как вы могли бы разрабатывать приложение для iPad без присутствия в Objective-C. В качестве проверки работоспособности вы можете убедиться, что версия C (Block_copy()) работает.

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