objectAtIndex和[0]之间的区别

时间:2010-08-13 20:38:47

标签: iphone

使用以下内容之间有什么区别:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *dir = [paths objectAtIndex:0]; 

    NSString *dir2 = paths[0]; // this throws incompatible type exception

2 个答案:

答案 0 :(得分:3)

  1. paths是指向您发送NSArray消息的objectAtIndex:实例的指针。接收方返回id
  2. paths[0]是纯C中数组开头的内存地址。[]NSArray不是一回事。

答案 1 :(得分:1)

对于那些现在发现这个问题的人来说,仅供参考...

使用LLVM,Objective-C支持对象下标。所以,

paths[0]

相当于

[paths objectAtIndexedSubscript:0]

相同
[paths objectAtIndex:0]

提供的路径是NSArray。

有关更多Objective-C文字语法,请参阅此处的文档:http://clang.llvm.org/docs/ObjectiveCLiterals.html