夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

UbuntuでObjective-C

なんか気分でぐぐったらしっかり出てきた。

というわけで書く。

内容は以下の三つを参考(というか統合してます(笑))

ではどうぞ。



とりまインストールでっせ。

普通に下のコマンド実行せよ(笑)

$ sudo aptitude install gobjc
$ sudo aptitude install libgnustep-base-dev

これで一応あるていど扱えるようになる。
コンパイルgccのオプションとして行うことになるんだな(うぅ・・・絶対口調おかしい(*_*;))

試しに下のコードをhello.mとして保存
#import 

int main()
{
printf("Hello World!\n");
return 0;
}
コンパイルは以下のとおり。
$ gcc -lobjc hello.m
$ ./a.out
./a.outはgccユーザーならおなじみのはず。
これでHello World!プログラムは出来上がりです。

で、こむずかしいことやるとこうなるらしい。
#import 
#import
#import
#import

// クラス宣言
@interface Text : NSObject {
NSString *message;
}
- (void)setMessage :(NSString *)text;
- (void)printMessage;
@end

// クラス定義
@implementation Text : NSObject
- (void)setMessage :(NSString *)text {
message = text;
}
- (void)printMessage {
printf("%s\n", [message UTF8String]);
}
@end

// メイン
void main() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

id text = [[Text alloc] autorelease];
[text setMessage:@"Hello World"];
[text printMessage];

[pool drain];
}
これをtest.mとして保存。これのコンパイルは下のようにしなきゃいけないんだって。
$ gcc test.m -lobjc -lgnustep-base -I/usr/include/GNUstep \(ここで多分改行してる)
> -fconstant-string-class=NSConstantString
これでまた./a.out実行するとHello Worldって表示される。

別にCerでもC++erでもObjective-Cerでもない…つまりC系には詳しくないってことだけど、まぁ(void)はキャストだろうし、NSAutoreleasePool *poolはポインタだろうなって察しはつく。

詳しいこと知りたければObjective-Cの入門書でも読んでください。一応手元にそれっぽいものあるけど今回はこれにて失敬。

じゃね♪