2008-08-17
cocoaの勉強をしてみる。
cocoa | |
cocoaの基本を知りたいのでチュートリアルをやってみた。
で参考されていた下記を読んだ。
とりあえず上のでobjective-cの寒気のする文法には対処できるようになったかもしれない。
appleのチュートリアルでどうしても、それ通りにはいかなかったところが一点。
nibファイルにcontrollerを登録する方法で
「File」>「Read Class Files」を選びます。
ConverterController.hファイルを選択して「開く」をクリックします。
とあるが、これだと何も反応がない。
なので、ライブラリからObject(青いやつ)をMainMenu.nibにドラップし、InspectorからIdentity(インフォメーションマーク)を選び、Class Identityで自分で選んでやる必要があった。後はチュートリアル通りで大丈夫。
前者のObjective-c入門をやったときのMEMO
@interface hoge
{
インスタンス変数宣言
}
メソッド宣言
@end
でインスタンス変数、メソッド名を記述する。
- (void)hogeはインスタンスメソッド
- hogeはクラスメソッド
@implementation hoge
メソッド定義
@end
objective-cではクラスの宣言と定義が完全に分離されている。
インスタンス化;javaでいうnewは+allocに宣言する。+はクラスメソッド。
allocメソッドではid型が返ってくる。あらゆるオブジェクトが入る型
@interface Hoge : Object//継承
- (void)fuga
@end
@implementation Hoge
- (void)fuga{
printf("fugafuga\n");
}
@end
int main() {
id hoge = [Hoge alloc];
[hoge fuga];
return 0;
}
[クラス名 メソッド名:引数リスト]で呼ぶ。
allocメソッドはObjectに定義されていて継承している。
クラスの宣言はヘッダファイル(@interface)
定義(@implementation)はクラス名と同じ~~.mに記述
インスタンス変数はデフォルトがprivateになってる?publicではなさそう。
- (戻り型)メソッド名:(引数型)変数名 ラベル:..
ラベルがどこにかかるのかが、よくわからない。
- (void)setPoint:(int)ptx int:(int)pty;
intはptx、ptyどっちにかかってるの?なんでラベル一個なの?謎
self->x = this.x
継承は
@interface Hoge :Object
@end
@interface subHoge : Hoge
@end
コンストラクタというものがないらしい。
- new
- init
を使う
- (id)init {
[super init]
x=0
return self
}
int main(){
id hoge = [Hoge new];
return 0;
}
- (id) init {
[super init]
return [self initHoge:0 init: 0];
}
- (id) initHoge:(int)x int:(int)y {
self->x = x;
self->y = y;
return self
}
と書ける。
id hoge = [Hoge new];
id hoge2 = Hoge alloc] initHoge:3 int:3];
freeでメモリ解放
@implementation Hoge
...
@end
int main(){
Hoge * hoge = [Hoge new]
return 0;
}
ポインタを使ってidのように動的にクラスの型を決めない。静的に決める。
@interface Hoge : Object
{
@public
int x;
@protected
int y;
@private
int z;
}
@end
と出来る。
hoge->xみたいな感じで呼ぶ。
classメソッドの使い方が不明。
javaでいうinterfaceは@protocol
@protocol Fuga
@end
@interface Hoge : object < Fuga>
@end
- 3 http://d.hatena.ne.jp/sugarbabe335
- 3 http://www.google.com/search?hl=ja&lr=&safe=off&client=safari&rls=ja-jp&q=macbook+メモリ交換+4G&revid=1228717382&sa=X&oi=revisions_inline&resnum=1&ct=broad-revision&cd=1
- 2 http://d.hatena.ne.jp/asin/4592143566
- 2 http://d.hatena.ne.jp/asinmobile/4592143566
- 2 http://d.hatena.ne.jp/os0x/20080110/ldrize_minibuffer
- 2 http://ezsch.ezweb.ne.jp/search/ezGoogleMain.php?query=applecare&start-index=4&adpage=3&mode=02
- 2 http://www.google.co.jp/hws/search?hl=ja&q=api+streetView&client=fenrir&channel=&adsafe=off&safe=off&lr=lang_ja
- 2 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=fRJ&q=mac+再インストール&btnG=検索&lr=lang_ja
- 2 http://www.google.com/search?q=AS3+コンストラクタ+オーバーライド&rls=com.microsoft:ja:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7ADBR
- 1 http://blog-search.yahoo.co.jp/search?ei=UTF-8&p=handbrake&n=10&so=dd&merge=on&tflg=none&sq=M&b=3