NSArray文字构造函数的选择器名称,如@ []?

Hit*_*iya 2 cocoa cocoa-touch objective-c nsarray objective-c-literals

它已经有一段时间锵加入Objective-C的文字语法NSDictionary,NSArray,NSNumber,和BOOL文字一样,@[object1, object2,]@{key : value}

我正在寻找与数组文字相关联的选择器名称@[].

我试图找出使用以下代码NSArray,但我没有看到一个似乎正确的选择器.

 unsigned int methodCount = 0;
 Method * methods = class_copyMethodList([NSArray class], &methodCount);

 NSMutableArray * nameOfSelector = [NSMutableArray new];
 for (int i = 0 ; i < methodCount; i++) {
    [nameOfSelector addObject:NSStringFromSelector(method_getName(methods[i]))];
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*an. 9

@[] 在NSArray上不是一种方法,所以你不会在那里找到它.

编译器只是转换@[]为调用[NSArray arrayWithObjects:count:].因为在它基本上找到所有@[]并替换它[NSArray arrayWithObjects:count:](当然携带参数)

请参阅此处文字部分

  • @HotLicks [文档](http://clang.llvm.org/docs/ObjectiveCLiterals.html)说它扩展为`+ [NSArray arrayWithObjects:count:]`,正如Jonathan报道的那样. (4认同)
  • 关键是它是语法糖.这意味着它是一种便于输入的形式,但转换为其他东西.使用的精确构造函数或类集群对象通常是不相关的,并且旨在被视为无关紧要. (2认同)