문제

iOS6 베타 3 를 사용하는 동안이 점을 알아 챘습니다.

UIViewContoller의 새로운 하위 클래스를 만들 때 (다른 상위 클래스가 알아 차리는이 동작을 생성하지 않음) .m 파일에는 이제 파일 맨 위에 빈 카테고리가 있습니다. 카테고리에 대해 배우는 과거에는 어떤 사람들 이이 같은 기술을 사용하여 사적인 방법을 나타내는 것과 동일한 기술을 사용할 것입니다 (진정으로 사적인 것은 아니지만).

는 의도가 여기있는 것입니까? 실제로 실제로 물건을 만드는 데는 변화가 있었습니까? @private 지침을 알아 봅니다.

개인 vars 및 메소드에 관한 사용자가 코딩 스타일은 무엇입니까?

업데이트 : Xcode가 클래스 확장을 사용하도록 추진하고 있기 때문에 앞으로 나아가서이 프로젝트의 개인 메소드 / IVAR에 사용했습니다. 나는 단점을 발견했다. 나는 그것이 모든 일등쇠 uiviewControllers 중 하나를 uibuttons, uilabels 등과 함께 재사용 할 수 있다는 것을 보았습니다 ... 나는이 상속을 가지고 있었다 : UIViewController <- FirstViewController <- SecondViewController.

WeLiew, SecondViewController에서 코드를 작성할 때 FirstViewController의 클래스 확장을 입력 한 모든 개인 메소드가 자동 완성에 팝업되지 않습니다. 약간의 성가심 ....

도움이 되었습니까?

해결책

이 인터페이스 정의를 참조합니다.

@interface MYViewController ()
@end
.

이것은 기술적으로 카테고리가 아닌 클래스 확장입니다. 카테고리에는 괄호 안의 문자열이 있습니다. 클래스 확장은 컴파일시 클래스에 추가되므로 IVAR (일반적으로 속성의 형태로)을 추가 할 수 있습니다. 카테고리는 런타임에 추가되어 IVAR을 추가 할 수 없습니다.

모든 것이 올바른지, 당신의 요점이 정확합니다. 이것은 개인 메소드 및 속성을 정의하는 데 사용됩니다.

OBJC 세계에서 "개인"은 면도기 와이어 벽이 아닌 "무단 침입"기호입니다. @private 키워드가있는 동안 (컴파일러 집행 프로그램을 추가)하면 IVAR에만 적용되며 일반적으로 필수가 아닙니다. 이러한 유형의 경고 기반 개인 정보는 OBJC에서 잘 작동하며 매우 충분합니다.

이 클래스 확장에 개인 속성을 넣고 외부 호출자는 "정의기에 액세스하려고하는 것처럼"선택기를 호출하는 것처럼 얻을 수있는 것처럼 "선택기"경고가 될 수 없습니다. OBJC 프로젝트에 경고가 존재하지 않아야하므로 데이터 캡슐화가 적용됩니다.


편집

비공개 인 경우 서브 클래스에 팝업해서는 안됩니다. 원하는 것은 보호됩니다. OBJC에서 보호 된 방법에 대한 훌륭한 계획은 없지만 일반적인 기술은 MyViewController + Protected.h와 같은 파일의 범주에 넣는 것입니다. 나는 이것이 좋은 objc 디자인이 너무 많지 않기 때문에 실제로 실제로 실제로가는 것을 발견합니다. 그것은 조성과 위임을 대신 사용합니다.

"왜 컨트롤러를 볼만한 이유" 첫째, 컨트롤러가 뷰가 아닙니다. IOS (Well, VC, TableViewController 및 GLKViewController)의 컨트롤러를 볼 수 있습니다. Mac에서는 창 컨트롤러 및 스포트라이트 수입업자도 있습니다. 봐 :

.../Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
.../Library/Xcode/Templates
.

그러나 왜 그 사람들? 글쎄, 이들은 모든 컨트롤러이며 컨트롤러가 개인적인 속성이 필요한 것이 중요합니다. 실제로 컨트롤러에 개인 속성이 없으면 아마도 너무 많은 공개를 만들 수 있습니다. 그것은 모델과 시야를 보는 범용이 아닙니다. 나는 그들의 결정에 빠지고 있다고 생각합니다. 또한 템플릿을 소유 한 사람들이 다른 사람들이거나 다른 시간에 업데이트 된 사람들이었을 수도 있습니다. 때로는 시간이 지남에 따라 부드럽게하는 불일치가 거의 없습니다.

자신의 템플릿을 만들 수 있습니다. 사용자 정의 Xcode 생성 4 파일 템플릿 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top