2

我认为 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,我可以在委托函数中获得结果。

但是,如果我一个接一个地调用,则永远不会调用委托函数。

为什么会这样?

4

0 回答 0