いろいろ

更新日 2010-12-17 (金) 14:30:20

変数

インスタンス変数

生成されたインスタンス変数ごとに固有の値が入る変数のことで、各インスタンスごとに異なる値を設定できる

クラス変数(オブジェクト変数)

うーん 現在調査中

インスタンスメソッドとクラスメソッド

メソッドの前に「-」がつくのがインスタンスメソッドで、「+」がつくのがクラスメソッド

クラスメソッドは「alloc」をしなくても直接メソッドにメッセージを送ることができる

サンプル

#import <Foundation/Foundation.h>

@interface nbai : NSObject
{
        int data;

        int r,baisuu;
}
//インスタンスメソッド
-(int) fun;

//クラスメソッド(オブジェクトメソッド)
+(int) fun2:(int) data2;

@property int data;

@end

@implementation nbai

@synthesize data;

//インスタンスメソッド
-(int) fun
{ 
        baisuu = 2;
        r = baisuu * data;
        return(r);
}

//クラスメソッド
+(int) fun2:(int) d2
{
//クラスメソッドでは@interface部で宣言したものは使用できないようだ
        int r;
        int baisuu;
        baisuu = 3;
        r = baisuu * d2;
        return(r);
}

@end

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

       //インスタンスメソッド
        nbai * a;
        a = [[ nbai alloc] init ];
        a.data = 4;

        //インスタンスメソッド と クラスメソッド
        NSLog(@" Ans = %d  Ans2 = %d", [a fun] ,[nbai fun2:4]);

    [pool drain];
    return 0;
}

クラス継承

nbaiを継承してクラスmnbaiを定義し、funというメソッドをオーバーライドしている。

サンプル

#import <Foundation/Foundation.h>

@interface nbai : NSObject
{
        int data;

        int r,baisuu;
}

-(int) fun;
@end

@implementation nbai

@synthesize data;

//インスタンスメソッド
-(int) fun
{
        baisuu = 2;
        r = baisuu * data;
        return(r);
}
@end

//クラス継承

@interface mnbai : nbai
{ 

}

-(int) fun;

@end

@implementation mnbai
//メソッドfunをオーバーライド
-(int) fun
{
        baisuu = 20;
        r = baisuu * data;
        return(r);
}

@end
int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        mnbai * b;
        b = [[mnbai alloc] init];

        b.data = 6;
        // クラス継承
        NSLog(@" mnbai Ans = %d  ", [b fun]);

    [pool drain];
    return 0;
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-12-17 (金) 14:30:20 (3222d)