Я думаю, что оба метода эквивалентны.
Знаете ли вы разницу?
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