2011-05-08 49 views
1

是的所有,另一個新手問題!這個方法背後的代碼在哪裏

我正在做一些我繼承的應用程序的維護工作,我試圖找到這種方法背後的代碼。在我的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背後的代碼究竟在做些什麼呢?我真的很想在這裏錯過一些基本的東西。所有幫助表示讚賞!在此先感謝您的幫助......

回答

2

正如middaparka所說,您的假設是現貨。至於找到doTask方法的功能代碼,請執行編輯 - >查找 - >在項目中查找或命令+ shift + F,然後在搜索欄中輸入「doTask」(或任何名稱的真實名稱)並將其設置爲'在項目中',它將拉出功能文本顯示的所有實例,包括函數定義。

1

我認爲我的方法定義爲第一 確定我存在有一個對象 代表已經然後 看它是否有一個doTask方法 其內定義;如果是,那麼 它告訴它在該委託上執行doTask 方法。我對麼?

這正是發生了什麼事情。

根據你的「doTask背後的代碼在哪裏」的問題 - 它應該在任何代理寄存器本身與有問題的類。 (這有點令人困惑,因爲正在使用相同的方法名稱,但[self.delegate doTask];行的意圖應該清楚。)

相關問題