Я широко использую делегирование для структуры VIEW - CONTROL - MODEL. Обычно объекты CONTROL & MODEL сохраняются во время работы приложения, вызывая небольшие проблемы.
Однако объекты VIEW, которые часто являются экземплярами UIViewController
, выделяются и освобождаются много раз.
Установка nil
для объекта делегата, которому назначается динамический экземпляр UIViewController
, когда он освобождается, - это один из способов избежать ошибки EXC_BAD_ACCESS.
Однако, даже если я всегда использую:
if ([delegate respondsToSelector:@selector(communityModel:finishedDeletingComment:)]) {
[delegate communityModel:self finishedDeletingComment:succeeded];
}
это не идеально для предотвращения ошибок. Если разные объекты VIEW совместно используют одного или ограниченное число делегатов объекта CONTROL, всегда есть вероятность непреднамеренной замены делегатов другим, что вызывает EXC_BAD_ACCESS
Есть ли лучший способ управления делегатами, чтобы узнать, действительно ли он доступен в момент вызова методов делегатов?
Я сомневаюсь, что мой обычный способ установки свойств для делегата должен быть изменен. Я использую этот способ для установки свойств делегата:
@property (nonatomic, assign) id<ControlDelegate> delegate;
Собираюсь ли я на правильный путь, сомневаясь в настройке свойства?