2013-08-02 92 views
1

我在解決NSNetService時遇到問題。當NSNetServiceBrowser找到該服務時,我已成功解決NSNetService在服務器端解析NSNetService

-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{ 

    if (![self.services containsObject:aNetService]) { 

     [aNetService setDelegate:self]; 
     [aNetService resolveWithTimeout:5.0]; 
    } 
} 

,則此方法調用成功

-(void)netServiceDidResolveAddress:(NSNetService *)sender{ 

    NSArray *addresses = [ns addresses]; 
    NSDictionary* dict = [NSNetService dictionaryFromTXTRecordData:[sender TXTRecordData]]; 
    // Here both values are ok 
} 

,但我想解決NSNetService到服務器端獲取上該服務發佈的IP地址。

-(void)netServiceDidPublish:(NSNetService *)ns{ 

    [ns setDelegate:self]; 
    [ns resolveWithTimeout:5.0]; 
} 

但這裏這種方法沒有調用。

-(void)netServiceDidResolveAddress:(NSNetService *)sender{ 
  
} 

但是我這樣做

-(void)netServiceDidPublish:(NSNetService *)ns 
{ 
    NSArray *addresses = [ns addresses]; // this gives null 

    // this also gives null 
    NSDictionary* dict = [NSNetService dictionaryFromTXTRecordData:[sender TXTRecordData]]; 
} 

但值null

如果可以,請幫助我。任何幫助將不勝感激。提前致謝。

回答

0

有一天這個問題,以及花了我一陣子弄明白。 由於某些原因,我需要將NetService分配給屬性。

# Declare a NSNetService property in the .h or further up .m file 
@property (strong, nonatomic) NSNetService *currentService; 

# In the .m file. 
-(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{ 

    if (![self.services containsObject:aNetService]) { 
     self.currentService = aNetService; 
     [self.currentService setDelegate:self]; 
     [self.currentService resolveWithTimeout:5.0]; 
    } 
} 
+0

你能解決你的代碼格式嗎? – Fiver

+0

固定格式。 – percivalwcy