본문 바로가기

2학년 2학기/ios프로그래밍

Objective-C 프로퍼티 실습

[1]getter/setter소스


// Dog.h

#import <Foundation/Foundation.h>


@interface Dog : NSObject

{

    int age;

}

-(void)setAge:(int)a;

-(int)getAge;

-(void)Show;


@end


// Dog.m

#import "Dog.h"


@implementation Dog


-(void)setAge:(int)a{

    age=a;

}

-(int)getAge{

    return age;

}

-(void)Show{

    NSLog(@"%d\n",age);

}


@end


// main.m

#import <Foundation/Foundation.h>

#import "Dog.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        Dog *happy=[[Dog alloc] init];

        [happy setAge:5];

        NSLog(@"해피의 나이는 =%d",[happy getAge]);

        

        [happy setAge:2];

        NSLog(@"해피의 나이는 =%d",[happy getAge]);

        [happy Show];


    }

    return 0;

}



[2]getter이름 변경


// Dog.h

#import <Foundation/Foundation.h>


@interface Dog : NSObject

{

    int age;

}

-(void)setAge:(int)a;

-(int)age; // Objective-C getter 이름에 get 붙이지 않음 인스턴스변수와 혼란 주의

-(void)Show;

@end


// Dog.m

#import "Dog.h"


@implementation Dog


-(void)setAge:(int)a{

    age=a;

}

-(int)age{

    return age;

}

-(void)Show{

    NSLog(@"%d",age);

}


@end


// main.m

#import <Foundation/Foundation.h>

#import "Dog.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        // insert code here...

        Dog *happy=[[Dog alloc] init]; //

        [happy setAge:5]; //

        NSLog(@"해피의 나이는 =%d",[happy age]);// 인스턴스변수와 혼동 주의

        [happy setAge:2]; //

        NSLog(@"해피의 나이는 =%d",[happy age]);//

        [happy Show]; //

    }

    return 0;

}



[3]property, synthesize 소스


// Dog.h

#import <Foundation/Foundation.h>

@interface Dog : NSObject

{

    int age;

}

@property int age;

-(void)Show;

@end


// Dog.m

#import "Dog.h"


@implementation Dog

@synthesize age;

-(void)Show{

    NSLog(@"%d",age);

}

@end



[4]인스턴스 변수 선언 삭제 가능


// Dog.h

#import <Foundation/Foundation.h>

@interface Dog : NSObject

@property int age;

-(void)Show;

@end



[5]dot notation 가능

@synthesize getter setter 자동으로 생성한다

@property 사용하면 (.)표기가 가능하다


// main.m

#import <Foundation/Foundation.h>

#import "Dog.h"


int main(int argc, const char * argv[]) {

    @autoreleasepool {

        Dog *happy=[[Dog alloc] init];

        // [happy setAge:5];

        happy.age=5; //dot notation

        

        // NSLog(@"해피의 나이는 =%d",[happy age]);

        NSLog(@"해피의 나이는 =%d",happy.age);

        [happy Show]; //

    }

    return 0;

}



[6]@synthesize 선언 생략 가능

디폴트 프로퍼티 신서사이즈를 사용하면 인스턴스 변수의 속성들은 속성의 이름 앞에 밑줄(_) 붙여 프로퍼티에 접근한다.


// Dog.m

#import "Dog.h"


@implementation Dog

//@synthesize age;

-(void)Show{

    NSLog(@"%d",_age);

}

@end