2010-08-07 32 views
1

我很困惑以下函數聲明的第一部分是什麼意思。它添加一個對象實例作爲函數定義的一部分。Objective C委託 - 爲什麼在函數定義的第一部分指定一個實例?

E.g.在一些示例代碼,類ItemsViewController從派生的UITableViewController具有該功能的定義:

-(void) tableView:(UITableView*) aTableView didSelectRowAtIndexPath:(NSIndexPath*) indexPath 
{ ... } 

究竟該tableView:(UITableView*) aTableView位實現什麼?

回答

6

它允許您的代理人作爲多個UITableView s的代表。當UITableView中的任何一個事件發生時,將調用相應的委託方法,並且可以使用第一個參數來確定事件與哪個UITableView相關,並相應採取行動。 (當然,你的代表必須有某種方式來知道哪個視圖是哪個視圖,例如通過在每個視圖中擁有代表它的代表)。

+0

David's明白了。 – skantner 2010-08-07 04:43:40

+0

謝謝 - 仍然需要澄清一點,因爲它對我來說還是不明顯 1.'tableView'部分是否僅將委託綁定到tableView實例? 2. aTableView是否被視爲函數的參數? – Giablo 2010-08-07 12:36:19

+0

啊,我明白你現在失去了什麼。 Objective-C中的方法名稱具有*命名參數*;每個參數之前都有一個小標籤,然後是':',然後是括號中的類型名稱,然後是用於從方法內部引用參數的變量的實際名稱。這個想法是,方法調用應該看起來像英語句子。所以,上述方法的參數是'aTableView'和'indexPath'。您可以使用單個對象作爲任意數量的事物的委託(或者甚至是多個類似的事物,例如多個UITableViews),但是您必須提供所有必需的方法 – David 2010-08-07 13:33:17

相關問題