是的,另一个新手问题!
我正在对我继承的应用程序进行一些维护工作,我正在尝试找到此方法背后的代码。在我的task.h文件中,我有一个可选的方法,doTask,在协议中声明,TaskDelegate。在我的task.m文件中,我找到了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背后的代码实际做了什么?我真的错过了一些基本的东西。所有帮助表示赞赏!在此先感谢您的帮助......
答案 0 :(得分:2)
正如middaparka所说,你的假设是正确的。至于查找doTask方法的功能代码,请执行编辑 - &gt;查找 - &gt;在Project或command + shift + F中查找并在搜索栏中输入'doTask'(或任何函数名称)并将其设置为'In Project',它将拉出函数文本显示的所有实例,包括功能定义。
答案 1 :(得分:1)
我假设我的方法定义是第一个 确定我是否有物体 代表已经存在然后 看看它是否有doTask方法 在其中定义;如果确实如此,那么 它告诉它执行doTask 该委托的方法。我是对的吗?
这正是发生的事情。
就你的“doTask背后的代码在哪里”问题而言 - 它应该在任何代表注册自己与所讨论的类。 (由于使用了相同的方法名称但[self.delegate doTask];
行背后的意图应该清楚,这有点令人困惑。)