首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addTarget:self与addTarget:nil

addTarget:self与addTarget:nil
EN

Stack Overflow用户
提问于 2013-06-06 14:39:25
回答 3查看 1.9K关注 0票数 7

我是iOS开发方面的新手。当我添加一个按钮programmatically.When时,我有点困惑,我们给按钮分配了一个目标,如下所示:

代码语言:javascript
复制
[button addTarget:self action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];

代码语言:javascript
复制
[button addTarget:nil action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];

在这两种情况下,它都调用CallMe方法。有人能给我解释一下这两行code.It的实际区别吗?如果有人能给你解释一下addTarget specially.Thank的工作原理,那会更有帮助。帮助将会被分配。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-06 14:52:53

如果将self或任何其他对象添加为操作消息的目标,则消息将恰好发送到此对象。

添加nil作为目标意味着当消息被触发时,将在运行时搜索实际的目标。查找从第一个响应器对象开始,并沿着响应器链从那里继续,即尝试由nextResponder方法返回的对象,直到找到实现此方法的对象。有关确切查找顺序的更多信息,请查看event handling guide

票数 6
EN

Stack Overflow用户

发布于 2013-06-06 14:48:35

根据苹果公司的documentation

目标对象是参数send to addTarget方法-即将操作消息发送到的对象。如果为空,则在响应器链中搜索愿意响应动作消息的对象。

如果您想删除操作,可以传递nil来删除所有与action和remove target方法上指定的控制事件配对的目标。

代码语言:javascript
复制
[button removeTarget:nil action:@selector(CallMe) forControlEvents:UIControlEventTouchUpInside];
票数 1
EN

Stack Overflow用户

发布于 2013-06-06 14:53:46

下面是苹果UIControl类文档中的参数Target的描述:

以目标对象为目标-即操作消息要发送到的对象。如果为空,则在响应器链中搜索愿意响应动作消息的对象。

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

https://stackoverflow.com/questions/16955316

复制
相关文章

相似问题

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