Я решил использовать его с использованием фоновой очереди GCD и семафора. Может быть полезно для других людей, читающих это.
// CREATE A BACKGROUND QUEUE AND SEMAPHORE
let bgQueue = dispatch_queue_create("myQueue", nil)
let semaphore = dispatch_semaphore_create(0)
override func didMoveToView(view: SKView) {
//DISPATCH CODE BLOCK TO QUEUE
dispatch_async(bgQueue, {
//THIS WILL GRAB YOUR SEMAPHORE
dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_NOW)
var i: Int = 0
while (i<50){
i += 1
//BLOCK
dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER)
print(i)
}
})
}
override func mouseDown(theEvent: NSEvent) {
//RELEASE SEMAPHORE
dispatch_semaphore_signal(semaphore)
}
Это заблокирует основной поток, и ваше приложение не сможет получить щелчок мышью. – EmilioPelaez
Итак, есть ли у вас какие-либо предложения по достижению такого поведения? – ergbil
Поведение, которое вы ищете, немного сложное. Что вам нужно сделать, так это поддерживать цикл основного события вашего приложения, чтобы события мыши отправлялись в вашу программу и в то же время отслеживали контекст вашего цикла. По большому счету кажется, что вам нужно потратить некоторое время на изучение немного больше об обработке событий ОС. Это или вам нужно предоставить более широкий контекст в вашем вопросе о том, какой эффект вы пытаетесь выполнить. –