Доступ к IBOutlet NSTextView из фонового потока?

Таким образом, я потратил часы, пытаясь отладить свой код, оказалось, что я пытался получить доступ к своему NSTextView из фонового потока. Короче говоря, я пытался использовать dispatch_async в своем коде, все еще выбрасывает ноль при развертывании. Если я изменю это на? он не рухнет, но ничего не выведет. Я пишу свое приложение, используя XCode 6 и Swift OSX. Все делегировано правильно, и перетаскивается правильно. У меня есть два класса, один viewcontroller и один класс с именем Server. Сервер инициализирует метод viewcontroller и вызывает view.output(), потому что я пытаюсь сделать "живой" консольный журнал. Это показывает, что мой объект сервера равен nil, а consoleOutput - nil, но переменная recv не равна nil.

class ViewController: NSViewController, NSTextViewDelegate {
var server: Server!

func output(recv: String?) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
        dispatch_async(dispatch_get_main_queue()) {
            self.consoleOutput.string! += recv!
        }
    }
}

}

Это ошибка потока, мне нужно отредактировать NSTextView из основного потока. Это выбрасывает эту ошибку,

fatal error: unexpectedly found nil while unwrapping an Optional value
Printing description of self: 
(VegasPanel.ViewController) self = 0x00006000000e2c00 {      
AppKit.NSViewController = { 
AppKit.NSResponder = { 
ObjectiveC.NSObject = {} 
} 
} 
server = nil 
consoleOutput = nil } 

Вывод вызывается из моего класса сервера, как это,

class Server: NSObject, GCDAsyncSocketDelegate {
   let received:String?
   var view = ViewController()

    func socket(sock: GCDAsyncSocket, didReadData data:NSData, withTag tag:Int)
    {
        view.output(received)
    }
 }

0 ответов

Другие вопросы по тегам