ios __weak и __autoreleasing

У меня появилось несколько вопросов после прочтения ответа на этот поток Проблемы владения указателем в ARC;

Для демонстрации 1, когда передается ссылка на переменную с атрибутом "сильный", неявно создается скрытая (__autoreleasing) переменная, и объект не сохраняется. Однако для демонстрации 4, когда передается ссылка на «слабую» атрибутированную переменную, объект сохраняется один раз.

Итак, мой вопрос довольно прост, просто мое любопытство, почему только скрытая переменная, созданная из «__weak», получает объект, сохраняющий +1? Этот шаблон предназначен для каких-либо особых проблем?

Надеюсь, я ясно объясню свой вопрос, любая помощь будет оценена по достоинству.


person Dirk Zhou    schedule 27.03.2013    source источник
comment
Это выглядит как интересный вопрос, но вам следует скопировать соответствующий код и вставить его прямо в текст, чтобы люди могли понять его, не переходя между страницами.   -  person nevan king    schedule 27.03.2013
comment
Я считаю, что слабые ссылки сохраняются/автоматически освобождаются при доступе к ним - это предотвращает их частичное обнуление через метод, использующий слабую ссылку.   -  person nielsbot    schedule 27.03.2013
comment
@nevan king: я пытался скопировать и вставить сюда, но демо-фрагменты там длинные и беспорядочные, а также с множеством комментариев. спасибо за ваш ответ в любом случае.   -  person Dirk Zhou    schedule 28.03.2013


Ответы (1)


скрытая (__autoreleasing) переменная создается неявно, и объект не сохраняется

Это неправда. __autoreleasing — это то, что сохраняется и автоматически освобождается.

person newacct    schedule 29.03.2013