2010-02-04 3 views
0

이것은 Cocoa NIB 파일의 내부 동작과 이에 대한 지원 프레임 워크 클래스에 대한 질문입니다.코코아 : NIB 파일에 링크 된 컨트롤러 클래스의 인스턴스는 무엇이 생성됩니까?

은 편리한 예를 들어, 애플 환율 계산기 튜토리얼에서 봐 주시기 바랍니다 : http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/01Introduction.html 당신은 MainMenu.nib 파일을 열 경우

, 당신은 "컨버터 컨트롤러"를 나타내는 객체를 볼 수 있습니다.

응용 프로그램이 실행되면 ConverterController 클래스의 인스턴스가 앱의 무언가 (NIB 또는 NIB를 지원하는 프레임 워크)에 의해 인스턴스화됩니다.

(해당 인스턴스가 ConverterController의 코드에 의해 생성 한 다른 클래스, 계산기,와 혼동하지 마십시오.)

내 질문은, ConverterController의 인스턴스를 어떻게 만들어? NIB의 기본 File 's Owner 객체입니까? 인스턴스를 만드는 객체가 무엇이든 그 객체가 사용하는 코드는 무엇입니까? 어딘가에 NIB 또는 프레임 워크의 말에 몇 가지 방법/기능이 있어야합니다 :

ConverterController *someVarName = [[ConverterController alloc] init]; 

내가 그 코드, 현재 ConverterController 인스턴스를 생성하는 데 사용되는 특정 코드를보고 싶어요.

ConverterController 인스턴스의 대체 방법을 만드는 방법이나 NIB 파일과 관련된 클래스 인스턴스를 수동으로 인스턴스화하는 방법을 알고 싶지 않습니다.

답변

2

nib는 객체의 아카이브입니다. 그것들은 Interface Builder에서 생성되고, 펜촉이로드되면 그 안에있는 객체는 아카이브되지 않고 연결됩니다.

+0

이것은 진실이 아닙니다. – Nibbles

+0

하지만 그 답변을 신비하게 투표하는 사람들은 유의하시기 바랍니다 - 이것은 내가 질문 한 질문과 접하게 관련된 내용 일뿐입니다. – Nibbles

+0

직접 관련이 있습니다. 당신은 인스턴스를 만드는 것에 대해 물어 보았습니다. 나는 Interface Builder가 그것을 수행한다고 대답했습니다. 펜촉에는 코드가 없습니다. 펜촉은 단지 아카이브 일뿐입니다. 그게 답입니다. – Chuck

1

개발자 문서의 Resource Programming Guide 문서를 확인하십시오. Nib 파일에 대한 섹션은 좋은 개요이며, "Nib 파일에 대한 내장 지원"하위 섹션에서는 여러 경우에 nib 파일을로드하는 방법을 설명합니다.

1

Info.plist 파일을 살펴보십시오.

섹션 중 하나는 Main Nib 파일 이름입니다. 응용 프로그램이 시작될 때 아카이브되지 않은 펜촉입니다. 일반적으로 MainMenu.xib입니다.

컨트롤러 개체가이 주 nib 파일 내에 있기 때문에 nib 파일이 보관되지 않은 경우 컨트롤러 개체가 만들어집니다.