首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对addTarget :action:forControlEvents的addTarget指针行为感到困惑:

对addTarget :action:forControlEvents的addTarget指针行为感到困惑:
EN

Stack Overflow用户
提问于 2014-06-22 14:14:26
回答 1查看 249关注 0票数 0

我有一个带有委托属性的UIView子类。在init方法中,我设置

代码语言:javascript
复制
self.delegate = nil. 

视图也有一个按钮,因此在init方法中,我还将按钮的目标设置为self.delegate,即为nil:

代码语言:javascript
复制
[myButton addTarget:self.delegate action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside]

在设置UIView子类的UIViewController中,我调用了UIView中的一个方法,该方法将UIView的self.delegate设置为UIViewController。当我单击该按钮时,目标的更改似乎会反映出来。

我想知道这最终是如何工作的,因为我的理解是addTarget:action:forControlEvents以id作为目标,并且指针应该在Obj-C中通过值传递。因此,我对为什么在调用addTarget方法之后更新最初的nil值指针感到非常困惑。

EN

回答 1

Stack Overflow用户

发布于 2014-06-22 14:46:58

Objective-C使用Dynamic binding。要调用的方法在运行时而不是在编译时确定。这就是为什么它也被称为后期绑定。

参考链接- https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/DynamicBinding.html

因此,委托是什么,调用哪个方法是在运行时定义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24348636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档