这2个代表用法,它们是一样的吗?

时间:2012-09-24 03:46:26

标签: objective-c

例如,我有A视图和B视图,有些值从A传递到B.

B.m中,我写道:

A *av = [[A alloc] init];
[av setDelegate:self]

是否与我在A.m中写的相同:

B *bv = [[B alloc] init];
[self setDelegate:bv];

我应该把这个“setDelegate”放在哪里?在viewDidLoad?编译器没有生成任何错误,但传递的值不成功,有人可以给我一些提示吗?感谢

1 个答案:

答案 0 :(得分:1)

通常,使用委托的要点是委托对象(在这种情况下为av)需要来自外部对象的某种帮助。如果该对象设置了自己的委托,就像使用bv一样,那种否定了拥有外部对象的优势。也就是说,如果A知道它希望B的实例作为其委托,那么您也可以将代码从B推送到A并跳过整个委托业务

也就是说,默认情况下A可能会使用B作为其委托,但仍允许将其他类的实例设置为委托以更改某些行为。如果这是您的目标,那么您可能会A尽早设置B的实例作为其代理,可能是-init(或其他初始值设定项)。