2007年9月28日 (金)

第5章 Helper Objects(その1)

『Cocoa Programming For Mac OSX』をテキストにして独学しているのですが、学んだ概要を残して行くことにしました。今回は「第5章 Helper Objects」からです。

  • Cocoa frameworkの多くのクラスはdelegateと呼ばれるインスタンス変数を持っている。
  • delegateとは「あるオブジェクトが処理できないメッセージを受け取った場合に別のオブジェクトに処理を代行してもらう仕組み」である。
  • 他のオブジェクトに対するポインタであるインスタンスをアウトレット(outlet)と呼ぶ。
  • ドキュメントのクラスの部分にはdelegate methodに関してはっきり記述されている。
  • delegate methodとして実装すれば呼び出されるが、実装しないものは無視される。

今回はここまでとします。

※内容に誤り等ありましたらご指摘いただければと思います。

| | コメント (0)

2007年9月27日 (木)

第4章 Control(その3)

『Cocoa Programming For Mac OSX』をテキストにして独学しているのですが、学んだ概要を残して行くことにしました。今回は「第4章 Control」からです。

NSControl

  • [foo addObject:bar];という文があった時、fooをreceiver、addObject:をselectorという。
  • -(void)setAction:(SEL)aSelectorを使用することで指定されたselectorに対してreceiverのaction methodを指定することができる。
  • selectorを取得するには@selectorを使用する。例えばbuttonのactionとしてdrawMickey:というmethodを設定したい場合には下記のようにすればよい。

SEL mySelector;
mySelector = @selector(drawMickey);
[myButton setAction:mySelector];

  • 実行時にselectorを文字列として見つけたい場合には下記のようにすればよい。

SEL mySelector;
mySelector = NSSelectorFromString(@"drawMickey");
[myButton setAction:mySelector];

第4章は今回で終了です。次回からは第5章へ進みます。

※内容に誤り等ありましたらご指摘いただければと思います。

| | コメント (0)

2007年9月16日 (日)

第4章 Control(その2)

『Cocoa Programming For Mac OSX』をテキストにして独学しているのですが、学んだ概要を残して行くことにしました。今回は「第4章 Control」からです。

NSButton

  • NSButtonのインスタンスは楕円形や正方形、チェックボックスといったようにいくつかの異なった形を持つことができる。
  • クリックされた場合もトグルしたり他の大多数のボタンと同じような動作をしたりといったように異なった振る舞いをする。
  • ボタンはアイコンとそれに結びつけられたサウンドを持つことができる。
  • - (void)setEnable:(BOOL)ynはボタンを有効/無効化する。有効なものはクリックすることができる。無効なものはグレーアウトする。
  • - (int)stateはボタンの状態を返す。ボタンがONの場合にはNSOnStateを、OFFの場合にはNSOffStateを返す。チェックボックスの状態を知ることができる。
  • - (void)setState:(int)aStateはボタンの状態を設定する。

NSSlider

  • NSSliderのインスタンスは垂直または水平方向へのスライダとすることができる。また、円形のスライダも可能である。
  • アクション(メッセージ)をターゲットに変化の間継続的に送ることもできるし、マウスボタンを離すまでアクションの送信を待つこともできる。
  • スラーダーは目盛りを持つことができる。目盛りをどちら側(上下)に置くかを指定することができる。
  • - (void)setFloatValue:(float)xはスライダを指定された値に移動させる。
  • - (float)floatValueは現在のスライダの値を返す。

NSTextField

  • NSTextFieldのインスタンスはユーザーに1行入力させることができる。テキストフィールドは編集可能かもしれないし、不可能かもしれない。編集不可能なテキストフィールドはウインドウ上のラベルとして使用される。
  • テキストフィールドは左から右、または右から左にスクロールさせることができる。しかし、上や下にはスクロールさせることはできない。
  • もし複数行を扱いたいのであればNSTextViewを使用する。
  • NSSecureTextFieldNSTextFieldのサブクラスであり、パスワード入力のような場合に使用される。
  • NSSecureTextFieldからはコピーやカットといった操作はできない。
  • - (NSSring *)stringValue- (void)setStringValue:(NSString *)aStringはテキストフィールドに表示されているデータを取得したり設定したりできる。
  • - (NSObject *)objectValue- (void)setObjectValue:(NSObject *)はテキストフィールドに表示されているデータを任意のオブジェクトとして取得したり設定したりできる。

今回はここまでとします。

※内容に誤り等ありましたらご指摘いただければと思います。

| | コメント (0)

2007年9月14日 (金)

第4章 Control(その1)

『Cocoa Programming For Mac OSX』をテキストにして独学しているのですが、学んだ概要を残して行くことにしました。今回は「第4章 Control」からです。

  • AppKit frameworkを理解するためにはNSControlクラスから始めるのがよい。
  • NSButtonNSSliderNSTextViewNSColorWellNSControlのサブクラスである。
  • コントロールはターゲット(target)とアクション(action)を持っている。
  • ターゲットは他のオブジェクトに対する単なるポインタである。
  • アクションはターゲットに対して送るメッセージである。
  • 例えば、ボタン(Button)はターゲットとアクションを持っており、ボタンがクリックされると(それに対応する)アクション(メッセージ)をターゲットに対して送信する。
  • NSControlNSViewから、NSViewNSResponderから、NSResponderNSObjectから継承されている。
  • クラス階層のトップはNSObjectである。すべてのクラスはNSObjectから継承される。

今回はここまでとします。

※内容に誤り等ありましたらご指摘いただければと思います。

| | コメント (0)

2007年9月 3日 (月)

やっと3章まで終わりました

『Cocoa Programming For Mac OSX』をテキストにして独学しているのですが、やっと3章まで終了しました。正直言って、せっかくこのような開発環境が無料で付いてきているのだからもう少し早く始めればよかったと思っています。まぁ、終わったことをいまさら言ってもしょうがないので、なるべく早くこのテキストを終了させようと思っています(試験とかもあるのでその辺の兼ね合いは難しいですが)。

学習していてよく理解ができなかったところがあります。retain counterです。概念は理解できているつもりなのですが、サンプルプログラムを使ってこの動きを追ってみると理解に苦しむ結果が出力されます。しばらくは考えていたのですが、ここでずっと止まり続けるわけにもいかないので、取りあえず歩き出しました。詳しそうな人を見つけて教えを請うしかないと思っています。

ものの仕組みを知ることは面白いことです。ここが面白いと感じられないと技術者には向いていないのかもしれません。

先は長いですが頑張ります。

| | コメント (0)

2007年8月12日 (日)

Leopardに向けて

Leopardというのは次期Mac OSXの開発コード名です。10月に発売される予定なのですが、他のOSでは見られないユニークで斬新なものになっています。このOSには開発キットが無料でついてくるのですが、この開発キットもかなり便利なものになっているようです。

ということで、Cocoaの勉強を再開させることにしました(苦笑)。今年の後半はイベントが目白押しなのですが、なぜか忙しくなるとイベントを増やす性格なのです(苦笑)。使用するテキストは『Cocoa Programming For Mac OSX』です。国内によいテキストがないので海外のものを使っています。英語の勉強も兼ねたりしています。

すでに途中までやっているのでそれ以降について何かあったらここでご紹介して行きたいと思っています。わからないことも多々あると思いますが、頑張りたいと思います。

| | コメント (0)