2011-04-05 3 views
0

저는 Apple의 AVCamDemo로 둘러보고 있습니다. 그 모든 것의 주위에 내 머리를 잡으려고하는 것 외에도, 나는 이해하지 못하는 것을 만났다.AVFoundation - 속성 선언 - 기본 질문

속성이 아주 이상한 방법으로 초기화되고 이에 대한 설명을 찾지 못했습니다. 헤더 - 파일하는 .m 파일

@synthesize session = _session; 

밑줄과 이야기가 무엇에

AVCaptureSession *_session; 

... 

@property (nonatomic,readonly,retain) AVCaptureSession *session; 

에서

???

설명해 주셔서 감사합니다.

답변

2

기본적으로 두 가지 작업이 진행됩니다. ivar (인스턴스 변수)와 속성.

  • ivar는 실제 변수입니다.
  • 속성은 getter 및 setter에 대한 구문 설탕입니다. 당신이

    @synthesize session; 
    

    을 할 경우

은 바르와 속성은 컴파일러에 의해 같은 이름을 가진 가정한다. 당신이

@synthesize session = _session; 

을 할 경우

그런 다음 속성 이름은 session하고 바르 이름은 _session입니다.

내 의견 : 나는 10 년 이상 코코아를 해왔다. @synthesize session = _session;이 더 안전한 방법입니다. ivar와 속성이 같은 이름을 가질 때마다 컴파일러 나 프로그래머가 혼란스러워진다.

1

언더 스코어는 인스턴스 변수와 속성을 구별하는 명명 규칙입니다.

특히 속성에 대한 할당 (참조 횟수를 자동으로 줄이고 증가시키는)과 인스턴스 변수에 대한 할당 (자동 참조 횟수 업데이트없이)을 구분하는 데 도움이됩니다.

+0

설명해 주셔서 감사합니다. – Swissdude