«前の日記(2009-08-31) 最新 次の日記(2009-09-02)» 編集

ぱぱネット(仮)


2009-09-01 急激に秋が深まってまいりました [長年日記]

_ [Linux] Objective-Cのお勉強をしよう

まだ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での開発経験者向けですね。


2001|04|
2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|05|10|

[BANNER]
このサーバーをもう12年も維持しているかと思うとめまいがしますよ。
ツッコミ機能は、ハンドル名が完全日本語じゃないと登録できません。
また、本文にURLが含まれていても登録できません。
いずれもSPAM対策です。
[Panda Papanda]
2009年
9月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

[Papanda]  [Kuma]  [Tomorin]  [Iron]  [Eiza]  [Dokkin]  [Honya]  [Zyou]  [Tsuyo]  [Bike]  [KoeBBS]  [Chukei]  [portal]  [tvmatome]  [KaoPaku] 

訪問者数:(+2560143)