2010-08-13 2 views
0

В чем разница между использованием следующих:разница между objectAtIndex и [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 умный ход, кстати. –

+0

Спасибо! Раньше я программировал в C. – azamsharp

ответ

3
  1. paths является указателем на экземпляр NSArray, что вы отправляете сообщение objectAtIndex:. Приемник возвращает id.
  2. paths[0] - это адрес памяти начала массива в чистом виде C. [] и NSArray - это не одно и то же.
+0

Итак, когда я использую пути [0], какой будет тип приемника? Это какая-то величина int, которая представляет адрес памяти начала массива. – azamsharp

+1

paths [0] - это просто указатель. это не объект, который означает, что у него нет методов. В чистом C вы должны знать, что содержит массив, чтобы использовать его. – falconcreek

1

Просто FYI для всех тех, кто там, что найти этот вопрос сейчас ...

С LLVM, Objective-C поддерживает объект индексацию. Так,

paths[0] 

эквивалентно

[paths objectAtIndexedSubscript:0] 

который идентичен

[paths objectAtIndex:0] 

предоставленных путей приведен NSArray.

Для более Objective-C буквального синтаксиса, смотрите документацию здесь: http://clang.llvm.org/docs/ObjectiveCLiterals.html

Смежные вопросы