Objective-C方法语法

Sun*_*day 6 methods syntax arguments objective-c

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

- (void) testMethod:someArgument {

}
Run Code Online (Sandbox Code Playgroud)

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

Dru*_*erB 7

默认参数类型是id.即使这将编译:

- testMethod:someArgument {
}
Run Code Online (Sandbox Code Playgroud)

这是一个id以其为参数并且应该返回的方法id.

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

- :someArgument {
}
Run Code Online (Sandbox Code Playgroud)

这可以称为:

[self :someObject];
Run Code Online (Sandbox Code Playgroud)

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

  • 我拒绝回答使用类似方法的任何问题:-D (2认同)