Apple의 documentation에 따르면 NSWindowController 하위 클래스를 초기화하는 권장 방법은 initWithWindowNibName()이 아니라 init()을 호출하는 것입니다. 이 문서는 NSWindowController가 원래 설계된 펜으로 만 작동 할 가능성이 높으므로 서브 클래스에서 super initWithWindowNibName을 호출하게하고, initWithWindowNib ... 메소드 중 하나가 존재하면 서브 클래스가 오류를 기록해야한다고 말합니다 라는.NSWindowController 하위 클래스 초기화
- (id) init
{
NSLog(@"init()");
return [super initWithWindowNibName:@"MyDocument"];
}
- (id) initWithWindowNibName:(NSString *)windowNibName
{
NSLog(@"error...use init() instead");
return nil;
}
- (id) initWithWindowNibName:(NSString *)windowNibName owner:(id)owner
{
NSLog(@"error...use init() instead");
return nil;
}
- (id) initWithWindowNibPath:(NSString *)windowNibPath owner:(id)owner
{
NSLog(@"error...use init() instead");
return nil;
}
가 실행되면, 내가 출력으로 다음을 참조하십시오 : 그래서
init()
error...use init() instead
... 응
그래서이 내가 쓴 무엇인가? 무슨 일이야?
두 번째로 호출되는 init()에 대한 stackoverflow question이 있습니다. 하나의 인스턴스가 코드를 통해 생성되고 다른 하나는 펜촉을 통해 생성됩니다. 내 펜촉에는 컨트롤러 객체가 전혀 없습니다.