1

Objective-C がメソッドのオーバーロードをサポートしていないことは知っています。しかし、「tableView」と同じ名前の次のデリゲート メソッドを理解するにはどうすればよいでしょうか。私には、これらのメソッドがオーバーロードしているように見えますが、よくわかりません。

ビュー コントローラーが UITableView デリゲートであることを示すには、UITableViewDelegate プロトコルを実装する必要があります。以下は、View Controller に実装する一般的なデリゲート メソッドです。

tableView:heightForRowAtIndexPath:
tableView:willDisplayCell:forRowAtIndexPath:
tableView:didSelectRowAtIndexPath:
tableView:didDeselectRowAtIndexPath:
tableView:commitEditingStyle:forRowAtIndexPath:
tableView:canEditRowAtIndexPath:
4

1 に答える 1

7

セレクター名には最初のコロン''までの部分だけでなく、すべての部分が含まれるため、リストするすべてのメソッドは異なります:

これは、Objective Cで試行されたメソッドのオーバーロードの例です(コンパイラーはこれを拒否します)。

- addSomething:(NSObject *) toView:(UIView *)view
- addSomething:(UIView *) toView:(UIView *)view   // won't work

同じ名前のクラスメソッドインスタンスメソッドバリアントがある場合、メソッドを「オーバーロード」できることに注意してください。

- addSomething:(NSObject *) toView:(UIView *)view 
+ addSomething:(NSObject *) toView:(UIView *)view  // this is OK

明らかに、あなたはこのような潜在的に混乱する何かをするかなりの理由が欲しいでしょう!

この質問も参照してください。

Objective-Cで同じ名前のクラスメソッドとインスタンスメソッド

于 2013-01-18T17:16:47.037 に答える