OS:Linux (Fedora 15)
世間からは完全に周回遅れになってしまいましたが、最近iPadを触る機会があり、とても良いものだと思ったので、がんばってiPad(iPhone)アプリを作れるようになろうと考えたりしています。
そこで、開発言語であるObjective-Cからやってみることにしました。
(※実は2~3年前にiPhoneアプリ開発の勉強をしたことがあるのですが、SDKについていけず挫折しました。)
今回は言語から少しづつ攻めていこうという作戦です。
Objective-Cは言語自体に癖があるので、普段JavaとかPHPとかC/C++とかやっている人は戸惑うと思います。
例として、C/C++との違いをまとめてみます。
違い1:#include <hoge.h>じゃなくて#import <hoge.h>
違い2:classじゃなくて@interface ~ @end
特に、違い2は独特です。
最初は慣れることが肝心だという考えのもとに、おなじみのHello worldプログラムを実装してみました。
#import <stdio.h>
#import <objc/Object.h>
@interface Hello : Object
- (void)hello;
@end
@implementation Hello
- (void)hello
{
printf("Hello world\n");
}
@end
int main()
{
id obj = [Hello alloc];
[obj hello];
return 0;
}
#import <objc/Object.h>
@interface Hello : Object
- (void)hello;
@end
@implementation Hello
- (void)hello
{
printf("Hello world\n");
}
@end
int main()
{
id obj = [Hello alloc];
[obj hello];
return 0;
}
クラスの定義は@interface ~ @endでやって、その中身を@implementation ~ @endに書きます。普通はヘッダー(***.h)と実装(***.m)に分けて書きますが、面倒なので、今回は1つのファイルに書いています。
さて、コンパイルですが、Objective-Cはgccでコンパイルできます。
私の環境ではgccは入っていたのですが、Objective-Cをコンパイルできるヤツではなかったみたいなので、yumでいれました。以下はそのコマンドです。
> yum install gcc-objc
Linuxならこれで入ると思います。
次にコンパイル(とリンク)をします。
コンパイルは"gcc -c ファイル名"です。
> gcc -c hello.m
これで、オブジェクトファイル(hello.o)が生成されます。最後に、リンクをして実行ファイル(hello)を生成します。
> gcc -l objc -o hello hello.o
objcをリンクしないとエラーになります。せっかく実行ファイルができたので、実行してみます。
> ./hello
Hello world
Hello world