Я широко использую делегирование для структуры ВИД - УПРАВЛЕНИЕ - МОДЕЛЬ. Обычно объекты 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;
Я иду по правильному пути, сомневаясь в настройке собственности?