2010-05-23 4 views
2

FTP 또는 Amazon S3와 같이 응용 프로그램에서 처리 할 수있는 모든 유형의 서버를 저장하도록 설계된 내 FTP 응용 프로그램에 싱글 톤이 있습니다. 이러한 유형은 앱 번들에있는 플러그인입니다. 그들의 경로는 applicationWillFinishLoading에 의해 위치하며, NSMutableDictionary에로드되고 저장 될 싱글 톤 내의 addServerType : 메소드로 보내집니다.코코아에서 컨트롤을 싱글 톤에 바인딩하는 방법은 무엇입니까?

내 질문은 :
NSDictionaryController를 싱글 톤 인스턴스의 사전에 어떻게 바인딩합니까? IB로 할 수 있습니까, 아니면 코드로해야합니까? 사용자가 서버 유형을 선택할 수 있도록 사전의 키를 NSPopupButton에 표시 할 수 있어야합니다.

미리 감사드립니다.
SphereCat1

+1

누구나? Helloooo oooout therrre! – vilhalmer

답변

1

나는 이것에 대한 답을 찾았습니다. 간단히 init 메소드를 오버라이드하므로 XIB 파일에서 호출 할 때 여전히 싱글 톤을 반환합니다. 그런 다음 realInit이라는 메서드를 제공하여 init이 처음 호출 될 때 실제 초기화를 수행합니다.

코드 :

-(id)init 
{ 
    @synchronized(self) 
    { 
     if (_sharedInstance == nil) 
     { 
      _sharedInstance = [[VayprServerTypes alloc] realInit]; 
     } 
    } 
    [self release]; 

    return _sharedInstance; 
} 

-(id)realInit 
{ 
    if (self = [super init]) 
    { 
     serverTypesArray = [[NSMutableArray alloc] init]; 
    } 

    return self; 
} 

편집 :

static ClassTypeGoesHere *_sharedInstance; 
ALSO

편집 : 당신이 당신의 클래스 구현의 상단에 정적 변수로 _sharedInstance를 정의해야합니다 물론 당신이 지금 알고 있기 때문에 init 메소드가 최소한 한 번 호출된다는 것을 확실히 알고 싶다면 보통 싱글 톤 sharedInstance 메소드를 다음으로 대체하십시오.

+(ClassTypeGoesHere *)sharedInstance 
{ 
    return _sharedInstance; 
} 

누구나이 디자인에 명백한 문제가있는 경우 알려주십시오. SphereCat1

관련 문제