2009-06-17 23 views
2

我有一个XML阅读器类,我用URL什么是设置视图控制器伊娃的最佳地点?

- (id)initWithURL:(NSURL *)url 

此类添加了使用变量的实例

// in the interface 
ViewController *viewController; 
// in the implementation 
[viewController addObject:theObject]; 

现在增加了对象在调用类的数组初始化,我初始化我的XML阅读器类,然后分别设置视图控制器:

XMLController *xmlController = [[XMLController alloc] 
        initWithURL:url]; 
xmlController.viewController = self; 

我的问题是我是否应该创建一个新的init函数,它将viewCon troller在同一时间。 谢谢。

编辑:我忘了补充一点,我的XML阅读器开始下载,并在初始化函数解析类。

回答

2

如果你的init例程会导致委托/控制器调用,或者引发异常活动(可能包括你的下载),这些活动可能会向委托人发送消息,那么你应该将它包含在init函数中。

否则,您的控制器可能会漏掉潜在的委托消息,例如可能在您的initWithURL例程返回之前调用的xmlController:didStartConnection。另外,如果控制器/委托是XMLController活动的必需部分,那么您应该将其包含在init例程中。

所以,是的,在这种情况下,我建议:

XMLController *xmlController = [[XMLController alloc] initWithURL:url andController:self]; 
4

这完全取决于你。你可以在Apple的代码中看到两种样式的例子。

只要您不对viewController属性的值随着时间的推移做出任何假设,就可以保持原样。

顺便说一句,您可能会考虑将addObject:逻辑重构为协议,而不是需要特定的子类。例如:

-xmlController:didDecodeObject: 

或者任何对您的XMLController对象的逻辑有意义。

相关问题