티스토리 뷰

IOS

Property

Vincent.seo 2018. 3. 14. 13:17

Getter & Setter 를 사용하여 멤버변수 생성하기

@interface Employee : NSObject
{
int employeeNumber;
NSString *name;
}

- (void) setName : (NSString *) newName;
- (NSString *) name; @end

Accessor 를 사용하여 멤버변수 생성하기

@interface Employee : NSObject
{
int employeeNumber;
NSString *name;
}

@property (nonatomic, assign) int employeeNumber;
@property (nonatomic, retain) NSString *name;

@end

@implementation Employee
@synthesize employeeNumber;
@synthesize name;

@end

프로퍼티 이름 바구기

@interface Employee : NSObject
{
int employeeNumber;
NSString *name;
}

@property (nonatomic, assign) int employeeNumber;
@property (nonatomic, retain) NSString *userName;

@end

@implementation Employee
@synthesize employeeNumber;
@synthesize userName = name;

@end

Assign: 비 오브젝트 프로퍼티로 사용할 수 있는 단 하나의 속성이다.
Retain: retain속성을 사용하고 @synthesize를 사용하면 컴파일러는 레퍼런스 카운팅을 맞춰주는 작업을 하기위한 setter를 생성한다.
Copy: setter에서 오브젝트를 복사하여 주소를 넘긴다.

만약 위 세가지를 명시하지 않는다면 컴파일러는 기본값인 assign으로 인식한다.

@dynamic: 만약 accessor메소드를 직접 작성한다면 컴파일러는 메소드가 @property 선언문에서 지정한 속성과 일치하는지 검사하지 않고 (copy 혹은 readonly) 로 선언해도 setter메서드를 작성성하는 동안 그냥 묵인한다.

nonatomic: 컴파일러는 스레드 보호에 대한 고려없이 accessor를 synthesize한다.

readyonly를 위한 숨겨진 setter를 사용하려면 @implementation 위 즉 파일 상단에 아래와 같이 작성하면 된다.

@interface Employee ()
@property (nonatomic, readwrite) int employeeNumber;
@end

@implementation Employee
...
@end


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함