委派与消息传递

时间:2012-07-20 18:47:11

标签: objective-c ios delegates message-passing

我有一个类,称之为A,它在NSDictionary中解析一些数据。该类有一个表视图,当选择一个单元格时,一个新类实例化,让我们调用该类B。类B依次实例化类C。我希望课程C能够接收NSDictionary中创建的A

代表们会工作吗?即使没有实例化类C,它会工作吗?如果这是真的,但事实并非如此,我应该在A方法中传递来自B - > C - > init的数据吗? Objective-C中有更好的消息传递方法吗?

2 个答案:

答案 0 :(得分:2)

  

我应该在init方法中传递A - > B - > C中的数据吗?

我认为这是最好的计划。

真的不应该担心B是如何做的。 B使用C的事实与A的业务无关。 A需要知道的是B需要字典才能做到这一点。

实际上,B并不关心字典,但字典应该是B的工作描述的一部分,这类似于:获取您给出的数据并以某种方式显示它。 如果B通过将字典直接传递给C处理字典,那很好 - 不是A应该关心的。

可以与委托做同样的事情。 A可以给B一个自己作为数据源的引用,B最终可以将它传递给C.这与你对字典的过程相同,所以如果你能把所有的东西放到C那里就没有真正的优势需要进入字典。如果A事先并不确切知道需要什么数据,或者您希望A能够以某种方式自定义C的行为,您可以考虑切换到委派。

答案 1 :(得分:1)

我会把它传递给init。或者取决于“A”类是什么类型。您可以将其设为单例,或将解析后的字典传递给单例,然后直接从“C”中引用它。