|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
まずは、簡単なコマンドラインプログラムから始めることにしましょう。このプログラムは、一連の任意の語句を引数として受け取り、重複して出現するものを削除して、残った語句をアルファベット順に並べ替えた後、その一覧を標準出力に印字します。Listing 2-1は、このプログラムの典型的な実行結果を示します。
Listing 2-1 簡単なCocoaツールからの出力
localhost> SimpleCocoaTool a z c a l q m z |
a |
c |
l |
m |
q |
z |
Listing 2-2は、このプログラムのObjective-C版のコードを示します。
Listing 2-2 重複除外と並べ替えのツールのためのCocoaコード
#import <Foundation/Foundation.h> |
int main (int argc, const char * argv[]) { |
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
NSArray *args = [[NSProcessInfo processInfo] arguments]; |
NSCountedSet *cset = [[NSCountedSet alloc] initWithArray:args]; |
NSArray *sorted_args = [[cset allObjects] |
sortedArrayUsingSelector:@selector(compare:)]; |
NSEnumerator *enm = [sorted_args objectEnumerator]; |
id word; |
while (word = [enm nextObject]) { |
printf("%s\n", [word UTF8String]); |
} |
[cset release]; |
[pool release]; |
return 0; |
} |
このコードを見て、おそらく最初に気付くにはその短さでしょう。同じプログラムの典型的なANSI C版よりもはるかに短いでしょう。このコードは見慣れない記述ばかりかもしれませんが、要素の多くはANSI Cでおなじみです。代入演算子や、フロー制御文(while)、Cライブラリルーチンの呼び出し(printf)、マクロ(NSMakeRange)、プリミティブなスカラー型などがあります。明らかに、Objective-CはANSI Cが土台となっています。
以降、このプログラミングトピックでは、このコードにあるObjective-Cの要素を検討し、これらを例として利用しながら、メッセージ送信のしくみからメモリ管理の手法にいたるまでさまざまな話題について説明します。これまでObjective-Cのコードを見たことがない人にとっては、サンプルのコードは恐ろしく複雑でわかりにくいかもしれませんが、そのような印象もすぐに薄れていくことでしょう。Objective-Cは、実際にはシンプルで洗練されたプログラミング言語であり、学習しやすく、直感的なプログラミングが可能です。
| < Previous PageNext Page > |
Last updated: 2006-05-23
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |