2010-05-11 3 views
4

이것은 꽤 까다로운 질문입니다. 저는 코코아 샘플 코드를보고 있는데, .m 파일과 헤더에 @interface 블록이 있습니다. 예를 들어 AppDelegate 클래스 헤더에서 UIWindow 및 UI 탐색은 인스턴스 변수로 정의되지만 @property 선언은 실제로 구현 파일에서 만들어집니다. 기능적 이유가 있습니까, 문체 선택입니까, 아니면 ...?내 @implementation에 @interface가 있습니다 - 왜 그런가요?

답변

7

일부 사용자 지정 대리자가 다른 클래스와 내부적으로 작업하려면 헤더에 인터페이스를 알릴 필요가 없습니다.
단지 불필요한 잡음을 추가하고 공개 사용을 위해 설계되지 않았거나 클래스의 컨텍스트 외부에서 유용하지 않은 인터페이스를 사용할 수 있도록합니다.

클래스의 메서드 및 속성에도 동일하게 적용됩니다. 인스턴스 변수에 대해 선언 된 속성을 사용하려고하지만 공용으로 액세스 할 수 없도록하려는 경우에는 헤더에서 선언 할 필요가 없습니다. 클래스 확장을 사용하면이를 수행 할 수 있습니다 (예 : "How to make a private property?".

+0

아, 감사합니다. –

관련 문제