まだMacBookは届きませんが、スムーズに開発に入れるように Linuxでも環境を整えておく。といっても、Debian系なら
# apt-get install gobjc libgnustep-gui-dev
で、だいたいの下準備が整うようです。
試しにこんなソースを用意。ファイル名はsample1.m。
#include <Foundation/NSObject.h> #include <stdio.h> @interface Test1 : NSObject { int x; } - (id)init; - (void)print; @end @implementation Test1 - (id)init { self = [super init]; x = 1; return self; } - (void)print { printf("Test1: %d\n", x); } @end int main() { Test1 *t1 = [Test1 new]; /* 動的結合 */ SEL printsel = @selector(print); if ([t1 respondsToSelector: printsel]) { [t1 performSelector: printsel]; } [t1 release]; }
コンパイルはこんな感じでいいのかな。おー一応動くぞ。
% gcc -I/usr/include/GNUstep -lgnustep-base sample1.m % ./a.out (実行) Test1: 1 (結果)
C++だと、ランタイム実行時に、メソッドの有る無しを調べてから実行、 なんてのは相当トリッキーなコードを書かないとできないですな。 これが柔軟なGUI構築につながっていくわけですね。
valgrindで調べてみるとメモリリークしまくりなのですが(汗;) どこ間違ってるのかなあ....単純にvalgrindが対応してないとかなら いいんだけども。
% valgrind --num-callers=8 --leak-check=summary \ --show-reachable=yes ./a.out LEAK SUMMARY: definitely lost: 5,840 bytes in 365 blocks. possibly lost: 2,928 bytes in 71 blocks. still reachable: 354,419 bytes in 6,308 blocks. suppressed: 0 bytes in 0 blocks.
メモリ管理はObjective-C 1.0と2.0でも違うらしいので、 良く調べないとひどい目にあいそう。
/usr/include/GNUstep/Foundationを見る限り、iPhone SDK本に出てくるような基本的なフレームワークは全て備わっているように 見えます。手打ちでお勉強するには十分なのかな。
本はとりあえず「iPhoneアプリケーションプログラミング」を買ってきました。
![]() 技術評論社 ¥ 3,360 |
書評で「図表による効果的な説明が行われていない」とか書いてあるけど、 ざっとみた感じC++,Javaでの開発経験者向けですね。
![]() |