0

我很难理解 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”?是描述吗?它有什么用?

谢谢

4

2 回答 2

3

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

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

和 C 风格的函数调用:

CGRectMake(1, 2, 3, 4);

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

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

于 2010-12-18T17:15:37.260 回答
1
  1. 因为CGRectMake()andCGRectGetHeight()是 C 函数,而不是 Objective-C 或 Objective-J 方法。参数在 C 函数调用的括号中以逗号分隔传递。

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

  2. 至于你的第二个问题,我以前没有见过这种方法,所以我不能真正说出prefs参数的用途......

于 2010-12-18T17:13:36.187 回答