Objective-C方法语法

时间:2012-10-01 14:23:06

标签: objective-c syntax methods arguments

编译以下方法定义(使用Apple LLVM 4.1)时,我感到很惊讶:

- (void) testMethod:someArgument {

}

注意缺少someArgument的类型。 Objective-C中有关指定方法参数类型的规则是什么?

4 个答案:

答案 0 :(得分:7)

默认参数类型为id。即使这样也会编译:

- testMethod:someArgument {
}

这是一个以id为参数的方法,应返回id

实际上,甚至不需要方法名称:

- :someArgument {
}

这可以称为:

[self :someObject];

当然所有这些都是非常糟糕的做法,你应该总是指定类型(和名称)。

答案 1 :(得分:2)

method参数中的“type”用于编译器和运行时消息传递的类型检查。

在原型中调用它的方式,它相当于“(id)”。

您可以在Apple Programming with Objective C document的“方法可以参数”部分中找到更多信息。我还在"The Objective-C Programming Language" document的“对象消息”部分中看到了一些非常有用的信息。

答案 2 :(得分:2)

语言规范声明:

  

如果未显式声明返回或参数类型,则假定为   作为方法和消息的默认类型 - 一个id。

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/objectivec/chapters/ocDefiningClasses.html

答案 3 :(得分:1)

Objective-C编程语言 tells us

  

对于Objective-C的面向对象的构造,例如方法   返回值,id将int替换为默认数据类型。 (严格来说   C构造(例如函数返回值)int仍然是默认值   类型。)