Создаю ли я цикл сохранения между UIViewController и настраиваемым объектом?

В проекте, использующем ARC, у меня есть UIViewController, который обрабатывает слишком много задач, поэтому я хочу разделить их. Одна очевидная вещь, которую мне нужно убрать, — это метод, который форматирует и отправляет электронное письмо, и разделяет его на отдельный объект.

Мой контроллер в настоящее время обрабатывает протокол MFMailComposeViewControllerDelegate, потому что после успешной отправки электронной почты у меня есть дополнительная работа.

Мой вопрос в том, что если контроллер использует отдельный объект для отправки по электронной почте, и я возвращаю ему указатель на контроллер для использования в качестве MFMailComposeViewController mailComposeDelegate, создам ли я проблему - в частности, сохранить цикл?

Если да, то что было бы лучшим подходом в этом сценарии? Будет ли достаточно установить свойство, указывающее обратно на контроллер, как слабое?


person Mattio    schedule 09.05.2013    source источник


Ответы (1)


Как вы предложили в своем вопросе, чтобы избежать цикла сохранения, вам просто нужно сделать свойство mailComposeDelegate вашего вспомогательного объекта свойством weak.

@interface MyViewController : UIViewConroller
@property(nonatomic, strong) MyHelperEmailObjectClass *emailHelper;
@end

@interface MyHelperEmailObjectClass : NSObject    
@property(nonatomic, weak) id<MFMailComposeViewControllerDelegate> mailComposeDelegate;
@end

Вы бы получили цикл сохранения, если бы объектам были назначены свойства strong друг друга.

person robbartoszewski    schedule 09.05.2013