2011-12-27 5 views
0

Насколько мое исследование является забота о Objective C, я нашел этот код для отображения элементов массива:Objective C: Отображение элементов массива

NSMutableArray *myArray = [NSMutableArray arrayWithObjects:@"a", @"b", @"c"]; 
int x = 0; 

for(; x<[myArray count]; x++) 
    NSLog(@"value at index %i is %@", x, [myArray objectAtIndex:x]); 

Я просто интересно, если это возможно ниже: используя [myArray[x]] вместо от [myArray objectAtIndex:x] вместо

for(; x < [myArray count]; x++) 
    NSLog(@"value at index %i is %@", x, [myArray[x]]); 
+1

Кстати, моя книга может помочь вам: значительная часть его ранних глав посвящена Objective-C, языку. Вот глава синтаксиса: http://www.apeth.com/iOSBook/ch03.html – matt

ответ

1

Нет, это не так. NSArray не является массивом C; это объект, как любой другой объект, и вам нужно поговорить с ним так, как вы разговариваете с каким-либо другим объектом, используя полнофункциональный синтаксис сообщений. (Единственный «ярлык», который вы ищете, это свойства.) Извините, но Objective-C ужасно многословен, и это прекрасный пример. Вы привыкли использовать как можно больше кода, чтобы избежать ввода всех этих букв ...

+0

ahh .. Я получаю это .. спасибо matt ..: D – Aldee

1

Вы не можете, и причина довольно проста: Objective-C основан на C и сохраняет обратную совместимость.

В C, используя [i] на объекте, вызывается оператор [] этого объекта. Однако в локальной области все объекты Objective-C являются просто указателями, которые делают вызов чем-то похожим на int[3]. Это справедливо для вас?

Реализация [] для NSArray будет означать нарушение обратной совместимости.

+2

Я считаю, что Objective-C основан на C, а не на C++ (но точка, вероятно, такая же). –

+0

Эй, это интересно. Я уже много лет программировал в Objective-C почти два года, и я никогда не понимал, что он основан на C. Он очень хорошо сочетается с C++ :-) Обновлен мой ответ. –

+0

Это потому, что C++ - это почти супермножество C, что делает Objective-C похожим на то, что это может быть расширение подмножества C++. Но на самом деле он был основан на C и был разработан примерно в то же время, что и C++. Добавочный материал основан на Smalltalk. –

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