我有一个带有委托属性的UIView子类。在init方法中,我设置
self.delegate = nil. 视图也有一个按钮,因此在init方法中,我还将按钮的目标设置为self.delegate,即为nil:
[myButton addTarget:self.delegate action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside]在设置UIView子类的UIViewController中,我调用了UIView中的一个方法,该方法将UIView的self.delegate设置为UIViewController。当我单击该按钮时,目标的更改似乎会反映出来。
我想知道这最终是如何工作的,因为我的理解是addTarget:action:forControlEvents以id作为目标,并且指针应该在Obj-C中通过值传递。因此,我对为什么在调用addTarget方法之后更新最初的nil值指针感到非常困惑。
发布于 2014-06-22 14:46:58
Objective-C使用Dynamic binding。要调用的方法在运行时而不是在编译时确定。这就是为什么它也被称为后期绑定。
因此,委托是什么,调用哪个方法是在运行时定义的。
https://stackoverflow.com/questions/24348636
复制相似问题