2009年8月15日土曜日

Linux(Ubuntu)で、Objective-C

iPhoneアプリを作るなら、Objective-Cという言語を知っておく必要が
ありそうなので、とりあえず、LinuxでObjective-Cをやってみる。
参考にしている書籍は、以下。

私は、とりあえず、図書館で借りました。
が、図書館に無かったり、近くに図書館が内容な場合は、上記からご購入ください :-)

Apple製品専用言語なのかと思ったが、ググったら、Linuxでも動きそうだったので、
挑戦してみる。

以下、その内容。

まずは、Objective-Cの環境をインストール。
Linux で Objective C を走らせてみた
の記事を参照して、以下の様にインストール。


$ sudo aptitude install gobjc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了
以下の新規パッケージがインストールされます:
gobjc gobjc-4.3{a} libobjc2{a}
0 個のパッケージを更新、 3 個を新たにインストール、 0 個を削除予定、1 個が更新されていない。
3700kB のアーカイブを取得する必要があります。 展開後に 9478kB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] Y
拡張状態情報を書き込んでいます... 完了
取得:1 http://jp.archive.ubuntu.com jaunty/main libobjc2 4.3.3-5ubuntu4 [160kB]
取得:2 http://jp.archive.ubuntu.com jaunty/main gobjc-4.3 4.3.3-5ubuntu4 [3538kB]
取得:3 http://jp.archive.ubuntu.com jaunty/main gobjc 4:4.3.3-1ubuntu1 [894B]
3700kB を 2s 秒でダウンロードしました (1552kB/s)
未選択パッケージ libobjc2 を選択しています。
(データベースを読み込んでいます ... 現在 250930 個のファイルとディレクトリがインストールされています。)
(.../libobjc2_4.3.3-5ubuntu4_amd64.deb から) libobjc2 を展開しています...
未選択パッケージ gobjc-4.3 を選択しています。
(.../gobjc-4.3_4.3.3-5ubuntu4_amd64.deb から) gobjc-4.3 を展開しています...
未選択パッケージ gobjc を選択しています。
(.../gobjc_4%3a4.3.3-1ubuntu1_amd64.deb から) gobjc を展開しています...
libobjc2 (4.3.3-5ubuntu4) を設定しています ...

gobjc-4.3 (4.3.3-5ubuntu4) を設定しています ...
gobjc (4:4.3.3-1ubuntu1) を設定しています ...
libc6 のトリガを処理しています ...
ldconfig deferred processing now taking place
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了


で、まずは、お約束Hello Worldからw(インターネットはどれくらい"Hello World"であふれているのだろうか..)

test1.m というファイル名で以下のソースを記述。

#import <objc/Object.h>

int main() {
printf("Hello World!\n");
return 0;
}

で、以下のコマンドを実行。

$ gcc test1.m -lobjc
$ ./a.out
Hello World!

って、これじゃ、普通のC言語と変わらない!w

というわけで、インターフェース、クラスを使ってみる。

#import <objc/Object.h>

@interface Human : Object
{
int age;
}
-setAge :(int) a;
-(int) getAge;
@end

@implementation Human
-setAge :(int) a { age = a; return self; }
-(int) getAge { return age; }
-(void) sayAge { printf("I'm %d years old.\n", age); }
@end

int main() {
id human = [Human alloc];
[human setAge: 23];
[human sayAge];

return 0;
}

で、コンパイル&実行すると、

$ gcc test1.m -lobjc
$ ./a.out
I'm 23 years old.


インターフェースにないメソッド(メッセージ?)を、実装で追加しても良いらしい。。
というわけで、なんとなく雰囲気をつかんだので、今のところは、まぁ良しとします。

参考サイト:

0 件のコメント:

コメントを投稿