objective-c中的方法语法

Chr*_*ler 6 objective-c

我是一个刚接触objective-c的.NET程序员,我很难理解一些细节语法.例如,我应该如何解析此方法签名:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath {
Run Code Online (Sandbox Code Playgroud)

我理解" - "char的含义,(UITableViewCell*)定义了返回类型.但其余的让我感到困惑.

Sam*_*lan 11

(1)      (2)          (3)            (4)         (5)             (6)                 (7)       (8)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
Run Code Online (Sandbox Code Playgroud)
  1. " - "定义实例方法
  2. 返回UITableViewCell指针
  3. 名为"tableView"的方法签名的第一部分
  4. 拿一个UITableView指针
  5. 使用局部变量名"tableView"
  6. 方法签名"cellForRowAtIndexPath"的第二部分
  7. 拿一个NSIndexPath指针
  8. 使用局部变量名称"indexPath".

实际的方法签名是:tableView:cellForRowAtIndexPath:.


Jas*_*ins 4

Objective-C 对方法使用命名的内联参数。(正如 bblum 在下面的评论中指出的那样,这种类型的参数有时被称为“交错”。)这反映了它作为 C 和 SmallTalk 语法混合的传统。后面的冒号表示方法的参数名称。对于您的方法,该方法的全名称为tableView:cellForRowAtIndexPath:。它需要两个参数,一个指向 a 的指针UITableView,一个指向 a 的指针NSIndexPath。在类 java 语言中,这个方法签名看起来像:

   public UITableViewCell cellInTableViewForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath);
Run Code Online (Sandbox Code Playgroud)

  • Objective-C 没有命名参数或关键字参数,它们称为交错参数。这是一个重要的区别。命名或关键字意味着您可以删除名称的一部分。不对。 (3认同)