Я понимаю, что это означает любой класс, начинающийся с «NS» или «UI». Apple не перестраивала все фреймворки с нуля, чтобы использовать ARC. Вместо этого ваш новый код ARC должен успешно взаимодействовать с существующими структурами, если вы следуете правилам.
В частности, свойства делегатов системных классов (таких как UIApplication) по-прежнему объявляются как (nonatomic, assign)
вместо (nonatomic, weak)
. Это означает, что эти свойства не обнуляются автоматически, когда делегат освобождается. Фактически, assign
является синонимом unsafe_unretained
в ARC. Отсюда совет, чтобы вручную обнулить свойство делегата в вашем методе dealloc. Это связано с тем, что нет никаких шансов, что системный класс попытается получить доступ к своему делегату после его исчезновения.