Objective-C勉強日記(1) 初めてのコンパイル

プログラムのコンパイルと実行

一番初めの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の書き方が独特すぎて、わかりにくい。すぐ慣れるかな。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.