だから、ここに私の問題があります: 私の iOS アプリは、ローカル ネットワークを介して NSNetService をアドバタイズしています。サービス ディスカバリはうまく機能しています。また、TXTRecordData を読み取る前にサービスを解決する必要があることも知っています。サービスの -didPublish デリゲート メソッドで、TXTRecordData が NSDictionary で設定されていることを確認しました。ここまでは順調ですね...
- (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser
didFindService:(NSNetService *)aNetService
moreComing:(BOOL)moreComing
{
if (!self.netServicesForResolution)
self.netServicesForResolution = [[NSMutableArray alloc] init];
NSLog(@"serviceBrowser found service: %@, with TXTRecordData: %@",
aNetService, aNetService.TXTRecordData);
[self.netServicesForResolution addObject:aNetService];
if (!moreComing) [self resolveNetServicesInArray];
}
- (void)resolveNetServicesInArray
{
for (NSNetService *service in self.netServicesForResolution) {
service.delegate = self;
[service resolveWithTimeout:5];
}
}
- (void)netServiceDidResolveAddress:(NSNetService *)sender
{
[self.netServicesForResolution removeObject:sender];
NSString *dataDict = [NSKeyedUnarchiver unarchiveObjectWithData:sender.TXTRecordData];
NSLog(@"freshly resolved netService has TXTRecordData: %@", dataDict);
}
-netServiceDidResolveAdress メソッドが呼び出されると、sender.TXTRecordData が nil であるため、アプリがクラッシュします。しかし、なぜゼロなのですか?
ご回答ありがとうございます:D