Как развернуть в Snow Leopard с включенным ARC

У меня есть приложение OSX, которое я хотел бы перенести на ARC. Все работает нормально, если я установил базовый SDK на 10.7. Но когда я установил его на 10.6, он не работает (потому что не находит _objc_release и т. Д.). Итак, как мне развернуть мое приложение на 10.6 с включенным ARC?


person david    schedule 08.10.2011    source источник


Ответы (2)


Вы устанавливаете SDK на 10.7, а цель развертывания - на 10.6.

Иметь ввиду:

Хотя можно создавать программы с использованием ARC, которые работают в Mac OS X 10.6 и iOS 4, обнуление слабых ссылок в этих ОС недоступно. Все слабые ссылки должны быть здесь __unsafe_unreserved. Поскольку ненулевые слабые ссылки настолько опасны, это ограничение, на мой взгляд, значительно снижает привлекательность ARC для этих ОС.

Источник: Автоматический подсчет ссылок

person catlan    schedule 08.10.2011
comment
10.6 и iOS 4.0 - самые ранние платформы, но, как указывает catlan, у ARC есть серьезные ограничения. 10.7 и iOS 5 - первые платформы, на которых ARC может работать полностью. Я думаю, что я выберу ARC для нашего развертывания 10.6, поскольку он новый, поскольку вы можете отключить ARC для каждого файла. - person ctpenrose; 10.12.2011
comment
Мои 2 цента: доступ к ссылкам, не зная, выпущены они или нет (с использованием функции __weak), кажется мне немного странным. Вы должны знать время жизни своих объектов, даже больше, если вы не владеете объектом, которому отправляете сообщения. Лично для меня отсутствие __weak не проблема. До ARC вы также не отправляли сообщения объектам, не зная, существует ли еще не принадлежащий вам объект. ИМО (за несколькими исключениями) это плохая практика кодирования. - person Joris Mans; 06.04.2012
comment
Джорис: __weak - для обратных указателей. В противном случае вы получите круги. Для этого это намного безопаснее, чем полагаться на то, что все вручную обнуляют свои ссылки. Но да, в большинстве других случаев это определенно запах кода. - person uliwitness; 14.08.2013

Вы можете найти PLWeakCompatibility полезным. Он позволяет использовать __weak-переменные в iOS 4 и OS X 10.6.

Исходный код здесь: https://github.com/plausiblelabs/PLWeakCompatibility
Подробнее на http://www.mikeash.com/pyblog/introduction-plweakcompatibility.html

person JK Laiho    schedule 14.05.2012