方法的参数类型是可选的吗?

时间:2017-11-17 17:50:14

标签: objective-c

今天我偶然发现了这个不同寻常的Objective-C,令我惊讶的是,编译没有失败并输出"嗨":

#include <Foundation/Foundation.h>

@interface MyObject : NSObject

- (NSString *)method:param;

@end

@implementation MyObject

- (NSString *)method:param
{
    return param;
}

@end

int main() {
    MyObject * m = [MyObject new];
    NSLog(@"%@", [m method:@"hi"]);
    return 0;
}

编译命令:

# clang version: clang-900.0.37
clang test.m -fobjc-arc -o test

method只有一个参数param,但我没有明确给出一个类型。我似乎无法找到相关的任何文件?发生了什么事?

1 个答案:

答案 0 :(得分:1)

我一直无法在此找到任何官方文档,但在我的测试中,这与通用id类型的参数无法区分。