2010-06-10 5 views
2

nib 파일은 직렬화 된 객체이고 연결을위한 소유자, 콘센트가 있다는 것을 알고 있습니다. XCode 탐색 창 템플릿 사용하기 메인 윈도우와 SecondView의 두 가지 nib 파일을 순서대로 생성 한 애플리케이션을 만들었습니다. MainWindow가 SecondView를 참조하는 방식을 이해할 수 없다. 내가 볼 수있는 한이 둘 사이에는 연결이 없다. SecondView의 소유자는 UIViewController이고 MainWindow에는 UIViewController 인 탐색 탭이 있습니다. 그들은 IB에 연결하는 방법하지만nib 파일에 의아해 함

이 또한 내가 가 MainWindow를 소유자 객체를 instanciating 해당 개체가 가 유지되고있는 곳이다 사람 이해가 안 ... 이해할 수없는, 어디 변수는 UIApplication myApp = [[UIApplication alloc] init].

이 하나는 자체 응답 : UIApplicationMain이고 어딘가에 콘센트를 생성해야하는 인스턴스 변수가 있어야합니다.

UIViewController 소유자가있는 10 개의 nib 파일을 만들면 누구가 deserialization을 트리거합니까?

일부 수업이 nib 파일 소유자 인 경우 해당 수업의 필수적인 책임은 무엇입니까? nib 파일을 메모리로 deserialize하고 있습니까?

정리되지 않은 질문이 있으십니까? nib 파일에 대한 수많은 기사와 문서를 읽었지 만 여전히 혼란 스럽습니다.

답변

1

응용 프로그램이 시작되면 MainWindow.xib가로드됩니다.

MainWindow.xib를 엽니 다. 목록보기에 있는지 확인하십시오. UINavigationController의 인스턴스가 표시되어야합니다. 그 안에는 UIViewController의 인스턴스가 표시되어야합니다. View Controller 인스턴스를 선택하고 Inspector 패널을 살펴보십시오. "Nib Name"속성이 "RootViewController"로 설정되어 있는지 확인해야합니다. 따라서 viewController는 런타임에 "RootViewController"펜촉을 찾아로드합니다.

따라서 10 개의 nibs를 생성하면 사용자는 직렬화를 담당하지만 Interface Builder에는 개별 nib 파일의보기를 패키징하여 nibs를 작고 관리하기 쉬운 방법으로 유지할 수있는 방법이 있습니다.

0

모든 질문을 올바르게 이해하고 있는지 잘 모르겠습니다. 그러나 MainWindown (기본 창) 펜촉은 응용 프로그램이로드 될 때로드됩니다. 프로젝트의 info.plist에서이를 확인할 수 있습니다. 당신은 거기에 기본 펜촉 파일의 이름을 찾을 수 있습니다. 응용 프로그램이로드되는 동안 기본 변수가로드되므로 객체의 소유자는 응용 프로그램의 인스턴스입니다.

+0

혼란스럽게 생각 합니다만, 응용 프로그램 시작 중에로드되지만 어떤 클래스가 코드로드 중 일부인지 여부를 알 수 있습니까? 그것을로드 할 수있는'main'의 유일한 코드는'UIApplicationMain' 함수입니다. 그래서 어딘가에 info.plist를 읽는 그 함수 안에있는 nib 파일을 deserialize하는 코드가 있습니까? – Pablo

+0

OK이 부분은 Apple의 문서를 다시 읽은 후에 분명합니다. Main nib로드는'UIApplicationMain'에서 일어납니다. 그러나, 나는'SecondView'가'MainWindow'에 어떻게 링크되어 있는지, 나의 질문의 첫 부분에 대한 답을 얻을 수 없다. – Pablo

관련 문제