这个方法背后的代码在哪里

Posted

技术标签:

【中文标题】这个方法背后的代码在哪里【英文标题】:Where is the code behind this method 【发布时间】:2011-05-08 08:50:50 【问题描述】:

是的,另一个新手问题!

我正在对我继承的应用程序进行一些维护工作,并试图找到此方法背后的代码。在我的 task.h 文件中,我有一个可选方法 doTask,它在协议 TaskDelegate 中声明。在我的 task.m 文件中,我找到了 doTask 的方法定义,但它引用了它的方法名称,所以我假设我会在另一个对象中找到另一个“更完整”的方法定义。错误的!我显然在这里遗漏了一些非常基本的东西。我无法在我的代码中找到任何其他对 doTask 的引用。

这是我的头文件 task.h 中的初始声明

@protocol TaskDelegate<NSObject>
@optional
- (void) doTask;

这是我的实现文件 task.m 中的方法定义

- (void) doTask

    if ((self.delegate != nil) && ([self.delegate respondsToSelector:@selector(doTask)]))
    
        [self.delegate doTask];
            

我假设我的方法定义首先确定我是否已经存在一个对象委托,然后查看它是否在其中定义了一个 doTask 方法;如果确实如此,那么它会告诉它在该委托上执行 doTask 方法。我说的对吗?

好吧,如果是这样,我的问题就变成了 doTask 背后的代码在哪里?我真的必须在这里错过一些基本的东西。感谢所有帮助!提前感谢您的帮助...

【问题讨论】:

【参考方案1】:

正如 middaparka 所说,您的假设是正确的。至于查找 doTask 方法的函数代码,执行 Edit -> Find -> Find in Project 或 command + shift + F 并在搜索栏中输入“doTask”(或任何函数名称)并将其设置为“在项目中”,它将拉出所有显示函数文本的实例,包括函数定义。

【讨论】:

【参考方案2】:

我假设我的方法定义是第一个 确定我是否有对象 委托已经存在,然后 看看它是否有一个 doTask 方法 在其中定义;如果确实如此,那么 它告诉它执行 doTask 该委托的方法。我说的对吗?

这正是正在发生的事情。

就您的“doTask 背后的代码在哪里”问题而言 - 它应该在任何委托中向相关类注册自身。 (这有点令人困惑,因为使用了相同的方法名称,但 [self.delegate doTask]; 行背后的意图应该很清楚。)

【讨论】:

以上是关于这个方法背后的代码在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Akinator 游戏背后的算法是啥样的?

Oracle Pl/SQL 中用户定义运算符背后的动机

将数据加载到网格的 Handsontable ASPX 代码背后的方法

如何从背后的 ASP.NET 代码访问 HTML 表单输入 [关闭]

有人可以解释一下这个示例 C# 代码背后的逻辑吗?多年来我没有得到答案 10 [重复]

扩展 Play Framework 2.4.x 背后的方法