差[0]

2010-08-13 37 views
0

是什麼使用以下的區別:差[0]

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

    NSString *dir = [paths objectAtIndex:0]; 

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

學習C,你開始使用的Objective-C是一個聰明的舉動之前,順便說一句。 – 2010-08-14 02:05:26

+0

謝謝!很久很久以前我曾在C程序中使用過。 – azamsharp 2010-08-14 23:31:34

回答

3
  1. paths是指向的NSArray實例要發送的objectAtIndex:消息。接收器返回id
  2. paths[0]是純C中數組開頭的內存地址。[]NSArray不是一回事。
+0

所以,當我使用路徑[0]什麼是接收器類型?它是某種類型的int值,它表示數組開頭的內存地址。 – azamsharp 2010-08-13 20:53:57

+1

路徑[0]只是一個指針。它不是意味着它沒有方法的對象。在純粹的C中,你必須知道數組包含什麼才能使用它。 – falconcreek 2010-08-13 20:59:39

1

僅供參考,所有這些在那裏,找到現在這個問題...

有了LLVM,Objective-C的支持對象的下標。所以,

paths[0] 

相當於

[paths objectAtIndexedSubscript:0] 

其等同於

[paths objectAtIndex:0] 

提供路徑被一個NSArray。

更多Objective-C的文字語法,看到這裏的文檔:http://clang.llvm.org/docs/ObjectiveCLiterals.html