Welcome to touyou note!!

こんにちは。touyouです。touyou noteは、creativeな人間を志すちっぽけな学生が様々なことに体当たりするブログです。
どうぞお楽しみ下さい。

Twitter: @touyoubuntu
HomePage: TOUYOUBUNTU

検索用ワード

PC Linux Windows Cygwin Android Python Java C/C++ C# HTML Processing Lisp Perl Arduino Japanino Unity Google TopCorder Codeforces Vim Emacs Github PSP Gundam Soccer Mobile Dialy Study Music ...

2011年3月16日水曜日

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の入門書でも読んでください。一応手元にそれっぽいものあるけど今回はこれにて失敬。

じゃね♪

0 件のコメント:

コメントを投稿