Могут ли блоки, созданные для iPhone 4 SDK, работать при развертывании на iPhone OS 3.0? - PullRequest
4 голосов
/ 07 июля 2010

Последняя версия Xcode IDE требует, чтобы вы нацеливались на iPhone SDK 4 при динамической обработке устаревших и новых функций, если вы настроили приложение для развертывания в более ранних выпусках.

Так что я могу использовать новые функции, такие как блоки, и при этом иметь их?работать на устройстве под управлением iPhone OS 3.0 или 3.1 или 3.1.3?

Я не нашел документации о том, как сделать обратную совместимость для предыдущих версий iPhone OS.Если бы вы могли указать мне на официальные документы, которые охватывают, как это должно быть сделано, я был бы признателен.

Ответы [ 4 ]

4 голосов
/ 07 июля 2010

Насколько я знаю, блоки не будут работать до 3.2, потому что среда исполнения Blocks не включена (классы типа __NSStackBlock__ или что-то еще).Помимо этого, я понимаю, что вы можете компилировать код с блоками, если вы используете достаточно новый компилятор.Решением было бы условное включение пользовательской среды выполнения в ваш проект.

3 голосов
/ 07 июля 2010

Хотя самое простое - это попробовать, я думаю , что они не причинят вреда, если они присутствуют, но не используются (например, вы используете оператор if времени выполнения, чтобы обойти блоки, используя код до версии 4.0 устройств), но они, конечно, не будут работать на устройствах до 4.0, и все API, которые Apple предоставляет, блоки использования будут в любом случае недоступны. В общем, если у вас есть способ сделать что-то без блоков, то нет причин иметь другой способ делать это с блоками - это просто увеличивает избыточность и дублирует код - поэтому, если вы хотите использовать устройства до версии 4.0 вы не должны использовать блоки, но если вы хотите / должны использовать блоки, не ориентируйте ОС ниже 4.0

0 голосов
/ 07 июля 2010

Нет, блоки не будут работать на iPhone до 3.2 без PLBlocks - и даже тогда, какой бы метод ни брал блок, он может не существовать.

0 голосов
/ 07 июля 2010

Используйте директивы препроцессора (http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/115-Configuring_Applications/configuring_applications.html), такие как TARGET_OS_IPHONE, чтобы использовать код для разных версий iOS.

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