본문 바로가기

IOS 개발

[iOS] awakeFromNib()

 

awakeFromNib()

 

요약

Interface Builder 아카이브 또는 nib 파일에서 로드 된 후 서비스를 위해 수신자를 준비합니다.

 

Summary

Prepares the receiver for service after it has been loaded from an Interface Builder archive, or nib file.

 

 

Declaration

func awakeFromNib()

 

 

토론

nib-loading 인프라는 nib 아카이브에서 재생성 된 각 객체에 awakeFromNib 메시지를 보내지 만 아카이브의 모든 객체가로드 및 초기화 된 후에 만 가능합니다. 객체가 awakeFromNib 메시지를 수신하면 모든 콘센트와 작업 연결이 이미 설정되어 있어야합니다.

부모 클래스에 필요한 추가 초기화를 수행 할 수있는 기회를 제공하려면 수퍼 구현 awakeFromNib를 호출해야합니다. 이 메소드의 기본 구현은 아무 것도 수행하지 않지만 많은 UIKit 클래스는 비어 있지 않은 구현을 제공합니다. 자신의 awakeFromNib 메소드 중 언제라도 수퍼 구현을 호출 할 수 있습니다.

Discussion

The nib-loading infrastructure sends an awakeFromNib message to each object recreated from a nib archive, but only after all the objects in the archive have been loaded and initialized. When an object receives an awakeFromNib message, it is guaranteed to have all its outlet and action connections already established.

You must call the super implementation of awakeFromNib to give parent classes the opportunity to perform any additional initialization they require. Although the default implementation of this method does nothing, many UIKit classes provide non-empty implementations. You may call the super implementation at any point during your own awakeFromNib method.

 

 

 

메모

Interface Builder의 테스트 모드 중 이 메시지는 로드된 Interface Builder 플러그인에서 인스턴스화된 개체에도 전송됩니다. 플러그인 링크는 개체 정의 코드가 포함된 프레임워크와 연결되기 때문에 Interface Builder가 있는 경우 upremeFromNib 메서드를 호출할 수 있습니다. Xcode 프로젝트에 대해 생성한 사용자 지정 개체의 경우에는 동일하지 않습니다. Interface Builder는 정의된 아웃렛과 해당 개체의 동작에 대해서만 알고 있으며 실제 코드에 액세스할 수 없습니다.

인스턴스화 프로세스 중에 아카이브의 각 개체가 아카이브되지 않은 다음 해당 유형에 맞는 메서드로 초기화됩니다. NSCoding 프로토콜(UIView 및 UIViewController의 모든 하위 클래스 포함)을 준수하는 개체는 initWithCoder: method를 사용하여 초기화됩니다. NSCoding 프로토콜을 준수하지 않는 모든 개체는 초기화 방법을 사용하여 초기화됩니다. 모든 객체가 인스턴스화되고 초기화되면 nib 로딩 코드가 해당 객체에 대한 콘센트와 작업 연결을 재설정합니다. 그런 다음 개체의 upermFromNib 메서드를 호출합니다. nib 로딩 프로세스 중에 수행된 단계에 대한 자세한 내용은 리소스 프로그래밍 가이드의 Nib 파일을 참조합니다.

 

Note

During Interface Builder’s test mode, this message is also sent to objects instantiated from loaded Interface Builder plug-ins. Because plug-ins link against the framework containing the object definition code, Interface Builder is able to call their awakeFromNib method when present. The same is not true for custom objects that you create for your Xcode projects. Interface Builder knows only about the defined outlets and actions of those objects; it does not have access to the actual code for them.

During the instantiation process, each object in the archive is unarchived and then initialized with the method befitting its type. Objects that conform to the NSCoding protocol (including all subclasses of UIView and UIViewController) are initialized using their initWithCoder: method. All objects that do not conform to the NSCoding protocol are initialized using their init method. After all objects have been instantiated and initialized, the nib-loading code reestablishes the outlet and action connections for all of those objects. It then calls the awakeFromNib method of the objects. For more detailed information about the steps followed during the nib-loading process, see Nib Files in Resource Programming Guide.

 

 

 

 

 

중요한

아카이브에서 객체를 인스턴스화하는 순서가 보장되지 않기 때문에 초기화 방법은 계층 구조의 다른 객체로 메시지를 보내지 않아야합니다. 다른 객체로의 메시지는 awakeFromNib 메소드 내에서 안전하게 보낼 수 있습니다.

일반적으로 디자인 타임에 수행 할 수없는 추가 설정이 필요한 객체에 대해 awakeFromNib를 구현합니다. 예를 들어이 방법을 사용하여 사용자 기본 설정이나 다른 컨트롤의 값과 일치하도록 컨트롤의 기본 구성을 사용자 지정할 수 있습니다. 또한 개별 컨트롤을 응용 프로그램의 이전 상태로 복원하는 데 사용할 수도 있습니다.

 

Important

Because the order in which objects are instantiated from an archive is not guaranteed, your initialization methods should not send messages to other objects in the hierarchy. Messages to other objects can be sent safely from within an awakeFromNib method.

Typically, you implement awakeFromNib for objects that require additional set up that cannot be done at design time. For example, you might use this method to customize the default configuration of any controls to match user preferences or the values in other controls. You might also use it to restore individual controls to some previous state of your application.

 

 

 

 

[참조 : Open in Developer Documentation]

 

'IOS 개발' 카테고리의 다른 글

[iOS] class PHPhotoLibrary : NSObject  (0) 2020.03.23
[iOS] struct CGRect  (0) 2020.03.23
[iOS] struct CGRect  (0) 2020.02.24
[iOS] Introducing JSON  (0) 2020.02.24
[iOS] init()  (0) 2020.02.24