iOS Developing 事始めも。
iPhoneアプリをお作りするお勉強をしておりまする。
勉強して行くうちにObj-Cへの抵抗感も無くなってきたので、
お勉強したことをメモしてゆきます。
//Objective-C事始め
まずクラス作るところから。
//header @interface ClassName: NSObject{ //宣言部分 @public @private @protected } @property (retain)NSString* str1; @property (retain)NSString* str2; +(ClassName)ClassMethod; -(void)InstanceMethod:(NSInteger) arg; @end
ざっとこんな感じに書くのがObj-C。
@interfaceでクラスを宣言するのがObj-C流
コロン挟んで継承元を指定。
スコープとかは、@を先頭に付けて区切る。
何も指定しないと、自動でProtectedになってしまうが、それでも大丈夫
propertyさんが頑張ってくれます。
propertyで宣言した変数は、synthesizeすると自動でget,setメソッドを作ってくれます。
//ClassName.h @implementation ClassName; @synthesize str1; //main.m id cls = [[ClassName alloc] init]; [cls setstr1:@"hogehogeman"]; //-> str1に文字列をセット [cls str1];//->hogehogemanが返される
普通にPublicで良いじゃん。って初心者の僕は思う訳です。
堅牢なアプリを作れるという安心感をpropertyさんは与えてくれます。
(?)C++とはInterfaceの指してる意味が違うのか?
+(ClassName)ClassMethod; -(void)InstanceMethod:(NSInteger) arg;
クラス内でしかアクセスできないメソッドは+で始めます。
あんまり使わないらしい。コンストラクタとかでよく使うらしい。
(-)から始まるやつはインスタンス化されたときに使えるメソッド。
こっちはよく使う。基本的に
引数は括弧で型をくくって宣言 二つ目以降はスペースで区切る。
(+ー)はよいとして、引数の宣言の仕方が気に食わない。
ああ、気に食わないとも。
id cls = [[ClassName alloc] init];
id型は、オブジェクトを格納する汎用的な型みたいです。
ぜひともいろんな型をぶち込んでみたいですね。
インスタンスメソッドにアクセスする方法は、[]鍵括弧・・・。
まぁ、割と便利なきがする。
#import <Foundation/Foundation.h>
ちゃんと覚えれば、便利な機能が豊富に用意されてるObj-C
Foundationクラスが優秀なんではないでしょうか。
がんばろう!