例如,我有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
?编译器没有生成任何错误,但传递的值不成功,有人可以给我一些提示吗?感谢
答案 0 :(得分:1)
通常,使用委托的要点是委托对象(在这种情况下为av
)需要来自外部对象的某种帮助。如果该对象设置了自己的委托,就像使用bv
一样,那种否定了拥有外部对象的优势。也就是说,如果A
知道它希望B
的实例作为其委托,那么您也可以将代码从B
推送到A
并跳过整个委托业务
也就是说,默认情况下A
可能会使用B
作为其委托,但仍允许将其他类的实例设置为委托以更改某些行为。如果这是您的目标,那么您可能会A
尽早设置B
的实例作为其代理,可能是-init
(或其他初始值设定项)。