скомпилировать приложение для osx 10.5

Есть ли способ убедиться, что приложение будет работать на osx 10.5 при компиляции с osx 10.7 (xcode 4.4)?

Или, по крайней мере, что он успешно скомпилирован для 10.5?


person Daniel    schedule 30.07.2012    source источник


Ответы (1)


Вы должны установить цель развертывания на OS X 10.5. Убедитесь, что вы не используете какой-либо API, который не был доступен в версии 10.5 (или, если вы используете, что вы используете его слабо и имеете запасной путь кода, который будет использоваться, если API недоступны). Протестируйте свое приложение на 10.5.

Варианты резервного кодирования:

  • проверить, отвечает ли объект API на селектор, введенный с версии 10.5.
  • проверить, существует ли класс, введенный с версии 10.5, получив ссылку через NSClassFromString()
  • слабая связь с фреймворками SDK, узнать во время выполнения, являются ли символы из этих фреймворков NULL
  • динамически загружать общие библиотеки с помощью dlopen(), откатываясь назад, если они не существуют
person Community    schedule 30.07.2012
comment
Я делаю все, что вы сказали, но почему-то не получается компилировать для 10.5. Нет ли журналов от компилятора Xcode? Ошибок не выдает... - person Daniel; 30.07.2012
comment
PS: у меня нет Mac с OSX 10.5 - person Daniel; 30.07.2012
comment
@simpleBob Откуда вы знаете, что он не компилируется правильно для 10.5, если нет ошибок компиляции, и вы не тестировали 10.5? Xcode 4 не компилируется для PowerPC. Чтобы получить доступ к журналам сборки, откройте навигатор журналов, выбрав Вид › Навигаторы › Показать навигатор журналов. Выберите сборку в навигаторе журналов, чтобы открыть редактор результатов сборки. Выберите шаг сборки в редакторе. Должна появиться небольшая кнопка с горизонтальными линиями. Нажмите кнопку, чтобы увидеть расшифровку сборки. - person Mark Szymczyk; 30.07.2012
comment
Я получаю эту ошибку, если я установил цель развертывания на OSX 10.5 в Xcode 4.4: stackoverflow.com/questions/11728634/ - person Oneiros; 30.07.2012
comment
@MarkSzymczyk У моего друга есть 10.5, и он протестировал его для меня. Но он не может постоянно тестировать его, и я не хочу покупать Mac для каждой ОС и каждой архитектуры, на которой я разрабатываю. (Я не разрабатываю для ppc) - person Daniel; 31.07.2012
comment
@Oneiros Я не получаю эту ошибку, но опять же, я не использую ARC - person Daniel; 31.07.2012
comment
Я получаю: Symbol not found: __NSConcreteGlobalBlock Referenced from: /Volumes/XXX/XXX/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle Expected in: /usr/lib/libSystem.B.dylib, что означает, что блоки где-то используются.. но я не могу найти где, возможно, библиотека, на которую ссылается искра.. - person Daniel; 31.07.2012
comment
@simpleBob Если вы не поддерживаете PowerPC и не хотите покупать Mac для тестирования на 10.5, отказ от поддержки 10.5 избавит вас от многих хлопот. Основная причина поддержки 10.5 и более ранних версий — поддержка PowerPC. Большинство людей с Intel Mac используют 10.6 или новее. - person Mark Szymczyk; 31.07.2012