2015-01-08 1 views
0

싱글 톤을 사용하여 글로벌 소켓을 만듭니다. 앱이 시작되면 호스트 소켓 연결에 사용되는 코드를 입력하라는 메시지가 표시됩니다. 뷰 컨트롤러에서 데이터 문자열을 싱글 톤으로 전달하여 URL로 사용하려면 어떻게해야합니까? 이것이 내가 싱글 톤을 설정 한 방법입니다.소켓에 싱글 톤을 사용하면서 사용자 입력 호스트를 소켓에 추가하기

+ (SocketKeeperSingleton *) sharedInstance { 

    static dispatch_once_t _once; 
    static SocketKeeperSingleton *sharedSingleton = nil; 


     dispatch_once(&_once, ^{ 
      sharedSingleton = [[SocketKeeperSingleton alloc] init]; 
      [sharedSingleton initSIOSocket]; 
      }); 


    return sharedSingleton; 

} 

-(void) initSIOSocket { 

    [SIOSocket socketWithHost:@"http://localhost:8080" response:^(SIOSocket *socket) { 

      self.socket = socket; 

      [self.socket on:@"q_update_B" callback:^(NSArray *args) { 


       NSArray *tracks = [args objectAtIndex:0]; 
       self.setListTracks = tracks; 
       [[NSNotificationCenter defaultCenter] postNotificationName:@"qUpdateB" object:nil]; 

     }]; 

     [self.socket on:@"current_artist_B" callback:^(NSArray *args) { 

      self.currentArtist = [args objectAtIndex:0]; 
      [[NSNotificationCenter defaultCenter] postNotificationName:@"currentArtistB" object:nil]; 

     }]; 

    }]; 

} 
+0

자세한 정보를 제공해 주시겠습니까? 사용자가 데이터를 입력 할 때 이미 싱글 톤이 생성되어 사용되고 있었습니까? – Brain89

+0

아니요, 왜냐하면 사용자의 호스트 문자열을 가지고 있기 때문에 [SocketKeeperSingleton sharedInstance]를 호출해야하기 때문에, 사용자가 입력 한 호스트 문자열이 그 싱글 톤을 만드는 메소드에 필요하기 때문입니다. @ Brain89 – Andy

+0

답변보기 그것을 유용하게 쓸 수 있습니다 – Brain89

답변

0

당신은 단순히이

+ (SocketKeeperSingleton *)sharedInstance { 
    static dispatch_once_t _once; 
    static SocketKeeperSingleton *sharedSingleton = nil; 
    dispatch_once(&_once, ^{ 
     sharedSingleton = [[SocketKeeperSingleton alloc] init]; 
    }); 
    return sharedSingleton; 
} 

- (void)startSIOSocketWithHost:(NSString *)sHost { 
    [SIOSocket socketWithHost:sHost response:^(SIOSocket *socket) { 
... 

처럼 뭔가에 싱글을 리팩토링 할 수 그리고 사용자 입력 후 첫 싱글 사용이 될 수 [[SocketKeeperSingleton sharedInstance] startSIOSocketWithHost : UserInput 사용자가]

+0

. 감사! – Andy