gpt4 book ai didi

objective-c - NSNetServiceBrowser 未找到已发布的服务

转载 作者:太空狗 更新时间:2023-10-30 03:48:59 25 4
gpt4 key购买 nike

在 iPhone(服务器)上,我试图发布一个服务,但我的代码遇到了 NSNetService 对象的委托(delegate)方法:

-(void)netServiceDidPublish:(NSNetService *)sender

所以我相信我的服务 @"_chatty._tcp." 已成功发布。然后在另一部 iPhone(客户端)上,我使用 NSNetServiceBrowser 找到我的服务,但它没有遇到委托(delegate)方法:

-(void)netServiceBrowser:(NSNetServiceBrowser *)netServiceBrowser didFindService:(NSNetService *)netService moreComing:(BOOL)moreServicesComing

我在这个网站上发现了一些与我的案例相关的问题,大部分答案提醒检查委托(delegate)对象是否超出范围。我确信我的委托(delegate)工作正常,因为它遇到了另一个委托(delegate)方法,例如:

-(void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser

谁能帮我看看是什么原因?

以下是我的部分代码:

我这样初始化服务:

#define MY_PROTOCOL @"_chatty._tcp."

self.myService = [[NSNetService alloc]
initWithDomain:@"" type:MY_PROTOCOL
name:@"thaith" port:self.port];

端口使用浏览器类中给定的 listeningSocket 进行初始化:

NSNetServiceBrowser* finder = [[NSNetServiceBrowser alloc] init];

//I also retain the finder.
finder.delegate = self;

[finder searchForServicesOfType:MY_PROTOCOL inDomain:@""];

最佳答案

在遇到同样的问题并放弃了一个月之后。我刚刚回到它并解决了它:

尽管the sample code in the docs似乎另有暗示,不要为 NSNetServiceBrowser 使用局部变量。一旦它超出范围,它就会被垃圾收集。使 finder 成为一个实例变量或属性,这样它就会一直存在。我没有立即发现这一点,因为正在调用 netServiceBrowserWillSearch: 委托(delegate),所以我假设一切正常...

关于objective-c - NSNetServiceBrowser 未找到已发布的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com