Различное управление памятью ARC / без ARC

Мне нужно преобразовать простой код ARC в код без ARC. Хотя это было относительно просто, я пропустил назначение переменной экземпляра self.var = xxx, вместо этого я написал var = xxx.

В то время как в версии ARC это не вызывало никаких проблем, в версии без ARC это определенно вызывало сбой.

Означает ли это, что на самом деле можно назначать переменные экземпляра в ARC без self. так они сохраняются?

Спасибо!

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


person user387184    schedule 09.09.2011    source источник
comment
да я понимаю - но это не про iOS5 а ARC - а ARC уже выпущен LLVM 3.0.... так что я подумал, что можно спросить   -  person user387184    schedule 10.09.2011
comment
Виноват. Не знал этого :-) Я удалю свой комментарий.   -  person 0x8badf00d    schedule 10.09.2011
comment
Разве детали реализации ARC не находятся под соглашением о неразглашении?   -  person Macmade    schedule 10.09.2011
comment
Нет, опять же, ARC доступен публично — (здесь: clang.llvm.org/docs/AutomaticReferenceCounting. html). Apple просто использовала его в новой версии. Я надеюсь, что я не один уже использую это....   -  person user387184    schedule 10.09.2011
comment
Хорошо, моя ошибка... :) Спасибо за ссылку. Лично я им не пользуюсь, так как предпочитаю сам распоряжаться памятью... Но это уже другой вопрос.   -  person Macmade    schedule 10.09.2011


Ответы (2)


Означает ли это, что на самом деле можно назначать переменные экземпляра в ARC без self. так они сохраняются?

Да вроде.

id obj_;

Это то же самое, что и это.

id __strong obj_;

obj_ имеет сильную ссылку на назначенный объект. Назначенный объект не будет освобожден до тех пор, пока не будет освобожден объект-владелец для ivar.

Пожалуйста, обратитесь к документу LLVM или к справочнику Apple по ARC, который все еще находится под соглашением о неразглашении.

person Kazuki Sakamoto    schedule 14.09.2011

введите здесь описание изображения

введите здесь описание изображения

Автоматический подсчет ссылок запрещает явную отправку сообщения «dealloc»

Я поделился трюком, позволяющим включить компиляцию старой библиотеки в новом iOS5 SDK.

Щелкните Проект.

Нажмите на цель.

Выберите вкладку «Фазы сборки».

Выберите несколько файлов, в которых вы хотите отключить ARC.

Нажмите ENTER / Нажмите клавишу Enter

Введите «-fno-objc-arc» (без кавычек, как показано на картинке)

person Ankit Vyas    schedule 30.01.2012