2012-02-13 2 views
0

죄송합니다. 너무 분명하다면. 나는 아직도 objetive-c와 적절한 디자인 패턴을 배우고있다. @interface 안에있는 속성을 클래스의 구현 파일에서 개인 속성으로 선언하는 것이 왜 좋은 생각인지 설명해 주시겠습니까? 클래스 외부의 아무도이 속성에 대해 임의의 getter 또는 setter를 사용하지 않으므로 클래스 범위와 함께 유형의 로컬 선언을 사용할 수 있습니다.클래스 구현의 개인 속성 선언은 무엇입니까?

감사합니다.

+0

'클래스 범위가있는 유형의 로컬 선언'은 무엇을 의미합니까? – ZhangChn

+1

혹시 웹에서 검색하거나 사과 문서를 뒤집어 봤습니까? – mbh

+0

[?] (http://d.images.memegenerator.net/instances/500x/14507811.jpg) – Veilkrand

답변

1

속성 의미를 사용하면 컴파일러에서 메모리 관리 동작을 '무료'로 처리 할 수 ​​있습니다. 클래스 내에서 데이터가 비공개 인 경우에도 컴파일러에서 올바른 release/retain/copy를 내보내면 시간이 절약되고 실수를 저지르기 쉽습니다.

현대식 ARC 컴파일러를 사용하면 현재는별로 문제가되지 않습니다.

+0

따라서 구현 내에서 속성을 사용하는 것은 의미가 없습니다. 그게 맞습니까? – Veilkrand

1

일반적으로 인스턴스 변수 또는 속성 인 @private을 선언하면이를 선언 한 클래스의 메서드에서만 액세스 할 수있게됩니다. 하위 클래스에서 액세스하려고하면 오류가 발생합니다.

당신이 이것을 요구하지 않았지만 또한 @protected도 있습니다. 속성이 이와 같이 선언되면 선언 한 클래스의 메서드와 그 클래스에서 상속 한 메서드의 메서드에서만 액세스 할 수있게됩니다. 수업.

이 정보의 출처는 Robert Clair의 Objective-C - Learning Objective-C 2.0에 대해 내가 아는 최고의 책입니다.

관련 문제