我认为 Runloop 的使用可能是有问题的。我不确定它是否与我在下面遇到的问题有关:
这是我的代码:
import Foundation
class Discover: NSObject, NSNetServiceBrowserDelegate {
var browser:NSNetServiceBrowser;
var done:Bool = false;
init() {
browser = NSNetServiceBrowser();
super.init();
browser.delegate = self;
};
func netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser!, didFindDomain domainString: String!, moreComing: Bool) {
println("Find domain \(domainString)");
}
func netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser!, didFindService aNetService: NSNetService!, moreComing: Bool) {
// println(aNetService);
println("Find servcie \(aNetService)");
}
func discover () {
browser.searchForBrowsableDomains()
browser.searchForServicesOfType("_http._tcp", inDomain: "local");
}
}
let d = Discover();
d.discover();
let runloop = NSRunLoop.currentRunLoop();
runloop.run();
println("Done");
我发现,在discover
函数中,如果我调用 searchForBrowsableDomains 或 searchForServicesOfType,我可以在委托函数中获得结果。
但是,如果我一个接一个地调用,则永远不会调用委托函数。
为什么会这样?