поддерживает WeakPointers и objc_arc_weak_unavailable - PullRequest
2 голосов
/ 22 марта 2012

Я думаю, что оба метода эквивалентны.

Знаете ли вы разницу?

objc_arc_weak_unavailable objc_arc_weak_unavailable атрибут в объявлении интерфейса класса.Тип указателя сохраняемого объекта является слабым-недоступным, если является указателем на (необязательно квалифицированный протоколом) класс T Objective-C, где T или один из его суперклассов имеет атрибут objc_arc_weak_unavailable.Программа плохо сформирована, если применяет спецификатор владения __weak к типу со слабым недоступным или если операнд значения в операции слабого присваивания имеет тип со слабым недоступным.

поддерживает WeakPointers ЕслиЕсли вы [sic] обнаружите, что должны реализовать пользовательские методы сохранения или выпуска, то вы также должны реализовать следующий метод в своем классе:

-(BOOL)supportsWeakPointers { return NO; }

Этот метод предотвратит формирование слабых указателей на ваши объекты.Настоятельно рекомендуется найти решение, которое не требует реализации собственных методов хранения и выпуска вместо этого.

Примечание: Проверяя синтаксический анализатор LLVM Я обнаружил, что правильный символ - objc_arc_weak_reference_unavailable, то есть:

__attribute__((objc_arc_weak_reference_unavailable))
@interface Point : NSObject 

@end

1 Ответ

0 голосов
/ 30 мая 2013

Важно, что objc_arc_weak_unavailable - это параметр времени компиляции (вы также можете объявить его с помощью NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE), тогда как supportWeakPointers - это вызов времени выполнения. Этот вопрос объясняет, почему вы можете использовать это.

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