2014-11-07 1 views
0

나는 스위프트에 관해서 질문이있다.신속하게 지정된 이니셜 라이저를 올바르게 구현하는 방법은 무엇입니까?

우리가 목표 - C에서 지정된 초기화를 만들 때 가끔 우리가 (해당 .xib 파일을로드하기 위해)이 작업을 수행해야 할 수 있습니다, 알고

if ((self = [super initWithNibName:@"PPFrameViewController" bundle:nil])) 
{ 
} 

스위프트에 해당하는 것이 무엇 . 바로 :

super.init(nibName: "PPFrameViewController", bundle: nil) 

?

또는 그 이상입니까? UIViewController 사전

+0

https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/initWi thNibName : 번들 : – Tirth

+0

NOT ABOUT 선택 사항에서의 이러한 질문; 이것은 지정된 초기화 프로그램의 호출 순서에 관한 것입니다. 따라서 @Tirth, 중복 참조가 잘못되었습니다. – GoZoner

답변

0

에서

덕분에 지정된 초기화 당신은 상태로 :

// subclass properties initialized 
    super.init(nibName: <name>, bundle: <bundle>) 
    // any other initialization 
: 당신이 하위 클래스의 속성을 초기화 한 후

은 지정된 초기화에 따라서
init(nibName nibName: String?, 
    bundle nibBundle: NSBundle?) 

당신은 그것을 호출

+0

감사합니다! 그러나 왜 (이후 첫 번째 라인) 전후에? – ppalancica

+0

Apple 문서는 초기화 과정에서 '안전성'을 나타냅니다. 상위/수퍼바이저를 초기화하기 전에 모든 하위 클래스 속성을 초기화해야합니다. 아마도 이것은 슈퍼 init에 의한 모든 호출이 초기화 된 속성을 필요로하는 재정의 된 서브 클래스 함수가 ​​될 수 있도록하기위한 것입니다. – GoZoner

+0

Objective-C에서는 항상 self = [super init] 문을 작성하기 때문에 나는 혼란스러워합니다. Java에서 우리는 super()를 써야합니다. 생성자의 첫 번째 줄 (또는 컴파일러가이를 수행 할 것입니다). 지금까지 내가 아는 한, OOP 패러다임에 따르면, 우리는 먼저 수퍼 클래스로부터 프로퍼티를 초기화하고 현재 클래스 자체의 프로퍼티를 초기화해야한다. 그것은 신속하게 다른 일을해야합니까? – ppalancica

관련 문제