まだ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アプリケーションプログラミング」を買ってきました。
iPhoneアプリケーションプログラミング技術評論社 ¥ 3,360 |
書評で「図表による効果的な説明が行われていない」とか書いてあるけど、 ざっとみた感じC++,Javaでの開発経験者向けですね。
![[BANNER]](../image/banner.png)
|