2011-12-27 9 views
0

は限り私の研究では、Objective Cのための関心事であるとして、私は、配列の要素を表示するため、このコードを見つけました:客観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 ..私はそれを..ありがとうマット..: – Aldee

1

Objective-CはCに基づいており、下位互換性を保持しています。

Cでは、オブジェクトに[i]を使用すると、そのオブジェクトの[]演算子が呼び出されます。しかし、ローカルスコープでは、すべてのObjective-Cオブジェクトは単にポインタにすぎず、int[3]のようなものになります。それはあなたに見えますか?

NSArray[]を実装すると、下位互換性が失われることを意味します。

+2

私はObjective-CはC言語ではなく、C++に基づいていると信じています(しかし、その点はおそらく同じです)。 –

+0

ねえ、それは面白いです。私はObjective-Cのプログラミングを2年ほど前から行ってきましたが、これはC言語に基づいていることに気づいたことがありませんでした。 –

+0

これはC++がCのスーパーセットに非常に近いため、Objective-CがC++のサブセットの拡張であるように見えるからです。しかし、実際にはCに基づいており、C++と同じ時期に開発されました。アドオンはSmalltalkに基づいています。 –