ヨハウィングの忘備録

レッドブル・インターネットの

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クラスが優秀なんではないでしょうか。

がんばろう!