2013-03-17 2 views
2

Objective C의 속성 및 ivars를 읽은 후에도 Xcode의 iOS 용 MasterDetail 템플릿과 혼동을 느낍니다.MasterDetail 템플릿의 속성 및 ivars

@class DetailViewController; 

@interface MasterViewController : UITableViewController 

@property (strong, nonatomic) DetailViewController *detailViewController; 

@end 

를 그리고 객체의 배열이 바르 :

MasterViewController는 DetailViewController의 속성을 선언 왜 그런 식으로

@interface MasterViewController() { 
    NSMutableArray *_objects; 
} 
@end 

입니까? 나는 왜 그 두 가지가 다르게 선언되는지를 알 수 없다. 감사합니다. .

답변

2

"property"으로 선언하면 다른 개체가 액세스하여 작업 할 수 있습니다. 위의 경우 MasterViewController에 속성으로 "detailViewController"을 추가하면 다른 객체가 & 속성 DetailViewController 노출 메서드에 액세스하여 작업 할 수 있습니다.

"_objects"변수는 MasterViewController의 내부 (또는 개인) 변수 인 반면.

+0

사실이지만 구현 파일에서 개인 속성을 선언하여 선언 할 수도 있습니다. 일반적으로이 특성이 ivars보다 선호됩니다. –

2

Apple의 설명서는 일반적으로 우수합니다. 애플의 템플릿은 때로는 약간의 도전을 받는다. 또한 언어가 향상 될 때 업데이트 속도가 느려지거나 (또는 ​​오류가 업데이트 됨) 때로는 업데이트 속도가 느려지기도합니다. objects 배열은 실제로 구현 선언 된 ivar가 아닌 private 속성이어야합니다. 어쨌든이 부분을 너무 많이 읽지 마십시오.

보기 컨트롤러는 데이터를 보유하지 않아야합니다. 모델 클래스 (템플릿에서 제공하지 않음)에서 가져와야합니다. 이 중 일부는 템플릿을 사용하기 쉽도록 유지하기위한 것입니다. 템플릿은 실제로 예제 코드가 아니며 템플릿입니다. 이상한 코드 중 일부는 템플릿 엔진의 한계로 인해 발생합니다. (클래스 이름 앞에 접두어를 붙이더라도 클래스 이름 앞에 접두어를 붙일 수는 없지만 매우 짜증나게했습니다.) 매우 불쾌했습니다.)

불행히도 예제 코드에서 뭔가를 볼 수 있다는 것은 꼭 그런 것은 아닙니다. 올바른 코딩 방법. Apple의 예제 코드의 대부분은 프로덕션 코드에 부적절합니다 (대부분의 예제에는 적절한 모델 클래스가 없거나 오류를 올바르게 처리하지 못합니다). 그러나 다시 한번, 그것은 예제 코드의 본질입니다. coding guidelines에 초점을 맞 춥니 다. 템플릿과 예제를 통해 배우는 것보다 훨씬 유용합니다.