【问题标题】:Confusion with method declaration [duplicate]与方法声明混淆[重复]
【发布时间】:2012-08-12 13:23:30
【问题描述】:

可能重复:
Method Syntax in Objective C

我对 iPhone 开发很陌生,我对使用 X-code 开发 iPhone 的方法声明感到困惑

请帮我确定这里的方法名称是什么。

tableViewwillSelectRowAtIndexPath

请说明您是如何识别它的。提前致谢。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSUInteger row = [indexPath row];
    if (row == 0) return nil;
    return indexPath;
}

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    方法签名是tableView:willSelectRowAtIndexPath:。在这里,您可以阅读有关 Objective C 中的方法名称的信息 - http://cocoawithlove.com/2009/06/method-names-in-objective-c.html 如果您不确定这里发生的原因和情况,请询问更多信息。

    【讨论】:

    • (+1),但是...您可能会争辩说,鉴于 UIKit 的上下文,更具体的方法名称是 -[UITableViewDelegate tableView:willSelectRowAtIndexPath:]。我知道这是挑剔的,但知道方法属于哪个类通常很有用。当然,相反的说法是,我们不知道这是我指的 UIKit 方法还是 OP 自己设计的东西。
    • 是的,你是对的,但是如果我们从选择器的角度来看方法名称,它是正确的。它比这更复杂,但是...... :)
    【解决方案2】:

    方法名称为– tableView:willSelectRowAtIndexPath:,您可以在Xcode上通过按住alt/option键并单击您要获取信息的方法轻松了解。

    编辑:

    – tableView:willSelectRowAtIndexPath: 是一个方法“签名/名称”,它在代码中声明为

    - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath

    参数

    tableView : 类型为UITableView

    一个表视图对象,通知代理即将进行的选择。

    indexPath : 类型为NSIndexPath

    在 tableView 中定位行的索引路径。

    Return Value () 类型为 NSIndexPath

    确认或更改所选行的索引路径对象。如果要选择另一个单元格,则返回 indexPath 以外的 NSIndexPath 对象。如果您不想选择该行,则返回 nil。

    -- 见here

    【讨论】:

    • 感谢您的回答,但我仍然很困惑,像“tableView:willSelectRowAtIndexPath”这样的方法名称在objective-c中是一个有效名称,因为java、C、C++等许多语言不允许任何特殊字符,如:方法签名声明中。
    • Objective C 消息发送不使用 java/C/C++ 等语法和规则,类似于 Smalltalk 消息。这些名称由多个部分组成,并且参数不是在 C++ 中名称后的括号中指定,而是与名称交错。请注意,考虑它们的方法名称甚至有点不精确。从技术上讲,方法没有名称,它们是响应消息而执行的无名代码。这些名称就是消息的名称。但在实践中,将它们视为方法名称是很常见的。
    【解决方案3】:

    方法名是 -tableView: willSelectRowAtIndexPath:

    “空格”之前的“:”后面的词是参数

    ()中的单词是参数类型

    PS:当然第一个()是返回类型

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2022-01-13
      • 2011-08-06
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多