我在UIViewController和自定义对象之间创建了一个保留周期吗?

时间:2013-05-09 21:36:20

标签: objective-c mfmailcomposeviewcontroller delegation retain-cycle

在使用ARC的项目中,我有一个处理太多问题的UIViewController,所以我想分开一些事情。对我来说,一个显而易见的事情是格式化并发送电子邮件并将其拆分为单独的对象的方法。

我的控制器当前处理MFMailComposeViewControllerDelegate协议,因为在成功发送电子邮件后,我还有一些额外的工作要做。

我的问题是,如果控制器使用单独的对象进行电子邮件发送,并且我将指针指向控制器以用作MFMailComposeViewController mailComposeDelegate,我是否会创建一个问题 - - 特别保留周期?

如果是这样,在这种情况下会有什么更好的方法?是否足以将指向控制器的属性设置为弱?

1 个答案:

答案 0 :(得分:1)

正如您在问题中所建议的那样,为了避免保留周期,您只需要将辅助对象的mailComposeDelegate属性设为属性。

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

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

如果对象彼此分配到属性,您将获得保留周期。