Objective-C勉強日記(1) 初めてのコンパイル
2010/01/09
プログラムのコンパイルと実行
一番初めのObjective-Cプログラム – @IT
最初のサンプルを写経してみた。
クラスの記述方法は、下のような感じなのか。引数の定義方法が馴染みにくい感じだ。
@implementation クラス名 : 親クラス - (戻り値の型) メソッド名 : (引数の型) 仮引数 { 処理 } @end
コンパイルでは、Makefileを作ってみた。
OBJS = Song.o Singer.o main.o CC = gcc CFLAGS = -g -Wall \ -I/usr/include/GNUstep \ -fconstant-string-class=NSConstantString LFAGS = -lobjc -lgnustep-base .SUFFIXES: .m .o sample: $(OBJS) gcc -o $@ $(LFAGS) $(OBJS) .m.o: gcc -c $(CFLAGS) $< Song.o: Song.h Singer.o: Singer.h main.o: Song.h Singer.h
それから実行してみる。
$ ./sample 2010-01-09 23:09:43.716 sample[3881] autorelease called without pool for object (8086d18) of class GSAutoreleasedMemory in thread <NSThread: 0x8074da8> ♪ La La La ... ♪
実行結果は、表示されてるけど、警告みたいなものが表示されている。
日付とかまで表示されていて、そのままログとして利用できるような表示だ。
autorelease呼び出してないんだけど、自動的に実行されているんだろうか?
これは、もうちょっと進んだら解明されるんじゃないかと思うので、放っておく。
まとめ
- ソースコードの拡張子m は、何のmなんだろう?マッキントッシュ?
- メソッドのsignatureの書き方が独特すぎて、わかりにくい。すぐ慣れるかな。