【问题标题】:I've some hard time to understand method signatures in Objective-J / Objective-C我很难理解 Objective-J / Objective-C 中的方法签名
【发布时间】:2010-12-18 17:09:01
【问题描述】:

我很难理解 Objective-J 中的方法签名(但在 Objective-C 上应该是一样的)。

语法应该是:

-(return_type)instanceMethod1:(param1_type)param1_varName :(param2_type)param2_varName;

类型在括号之间指定。但是,我发现了以下代码行:

1)

var navigationArea = [[CPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 150.0, CGRectGetHeight([contentView bounds]) - 150.0)];

为什么要在括号之间传递参数?我以为你在冒号“:”之后指定参数。

2)

-(void) importDocumentWithName:(NSString *)name withSpecifiedPreferences:(Preferences *)prefs beforePage:(int)insertPage;

什么是“withSpecifiedPreferences”?是描述吗?它有什么用?

谢谢

【问题讨论】:

    标签: objective-c syntax cappuccino objective-j


    【解决方案1】:

    1)展示了两种风格的混合,Objective-C风格的方法调用:

    [[CPView alloc] initWithFrame:...];
    

    和 C 风格的函数调用:

    CGRectMake(1, 2, 3, 4);
    

    Objective-J 是 JavaScript 的严格超集,这意味着除了 JavaScript 具有的 C 风格的函数调用语法之外,您还可以使用消息传递语法。

    2)中,withSpecifiedPreferences: 是方法(或“选择器”)名称的一部分,请参阅"Message Syntax"

    【讨论】:

      【解决方案2】:
      1. 因为CGRectMake()CGRectGetHeight() 是C 函数,而不是Objective-C 或Objective-J 方法。参数在 C 函数调用的括号中以逗号分隔传递。

        然后将CGRectMake() 的结果作为参数传递给CPView 类的initWithFrame: 方法,这是一个Objective-C 方法。

      2. 至于你的第二个问题,我之前没有见过这种方法,所以我无法确定prefs 参数的用途......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        相关资源
        最近更新 更多