2014. 1. 10. 10:36

Object C 언어의 변수선언 중 필수적으로 알아야 할 사항이다!.


우선 사용 방법은 다음과 같다.


--->   Header File

//

//  GreenViewController.h

//  LotationTest

//

//  Created by jjangdali on 2014. 1. 9..

//  Copyright (c) 2014 jjangdali. All rights reserved.

//


#import <UIKit/UIKit.h>


@interface GreenViewController : UIViewController

{

    NSString *userID;

}


@property (strongnonatomicNSString *userID;


@end


---> Source File

//

//  GreenViewController.m

//  LotationTest

//

//  Created by jjangdali on 2014. 1. 9..

//  Copyright (c) 2014 jjangdali. All rights reserved.

//

#import "GreenViewController.h"


@interface GreenViewController ()


@end


@implementation GreenViewController


@synthesize userID;


@end


@property 는 외부에서 객체에 접근하기 위해 선언하는 것이다.

클래스 내부에서만 사용하는 변수인 경우에는 property를 사용하지 않는다.

property 로 선언한 변수는 클래스 내부의 전역 변수와 아무런 관련이 없으며(독립적이라고 보면 된다.)

헤더에서는 이러한 변수가 존재한다. 라는 정도의 의미로 사용된다.


@synthesize 는 헤더파일에서 정의한 것을 소스파일에서 실체화 하는 것이다.

synthesize를 선언하게 되면 내부에 전역변수를 만든다.(if 같은 이름의 변수가 있다면 그대로 사용한다.)

getter 함수과 setter 함수를 만든다. (setter함수는 property가 readonly로 설정되지 않은 경우에만)


@property에 대한 참고사항


  1. atomic OR nonatomic
  2. <ol style="margin: 0px 7px 13px 40px; padding: 0px 7px; list-style-type: lower-alpha;">
  3. 이 두 속성중 하나를 선택하는 것으로 기본값은 atomic 이다.
    이부분은 멀티스레딩에 관련된 부분으로 보통 nonatomic을 사용한다. 
  4. atomic 으로 설정되면 접근자와 수정자를 사용할 때 lock 과 unlock  을 사용하면서 보호한다는 것이다.
    단,  atomic 으로 설정하면 속도에 있어서 문제가 좀 될 수 도 있다.
    그러므로 굳이 동기화가 필요하지 않는 경우에는 nonatomic  으로 설정하곤 한다.
  5. </ol>
  6. assign OR retain OR copy
  7. <ol style="margin: 0px 7px 13px 40px; padding: 0px 7px; list-style-type: lower-alpha;">
  8. setter에서 객체를 지정 받을때 
  9. <ol style="margin: 0px 7px 13px 40px; padding: 0px 7px; list-style-type: lower-roman;">
  10. assign의 경우 주소값만 지정받고
  11. retain의 경우 기존것을 release후 새로 받은걸 retain 한다.
  12. copy의 경우 기존것을 release후 새로 받은걸 copy 한다.
  13. </ol>
  14. 이부분은 setter에 관련있고 getter와는 관련 없다.
  15. </ol>
  16. readonly OR 없음
  17. <ol style="margin: 0px 7px 13px 40px; padding: 0px 7px; list-style-type: lower-alpha;">
  18. readonly설정되면 setter가 없다. 말그대로 읽기 전용

    [출처]
















Posted by 은돌군