我有這樣的代碼:Objective-C信號量問題?
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[self.skView.scene fadeOutWithDuration:FADE_SEC completion:^ {
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
[self startGame];
不幸的是,該信號不被通知。我不知道爲什麼...
這裏的fadeOutWithDuration:completion:
代碼:
- (void) fadeOutWithDuration:(NSTimeInterval)duration completion:(void (^)(void))predicate {
SKAction * action = [SKAction fadeAlphaTo:0.0 duration:duration];
[self runAction:action completion:predicate];
}
我以前在完成了塊[self startGame]
,但似乎在這個代碼塊中出現的內存泄漏,所以我決定使用信號量來確保該塊沒有保留任何東西。關於爲什麼信號量沒有被髮信號的任何想法?
在此先感謝!
淡出是否真的發生? – 2015-03-31 04:04:38
不。它在我添加信號燈之前做過。我認爲發生的是信號量阻塞了主線程,這阻止了fadeOut方法的完成,然後調用信號量信號。 – Jake 2015-03-31 04:05:50