2016-10-26 1 views
6

Я использую UIFeedback Haptic Engine с быстры 2,3 как:UIFeedback Тактильная двигателя называется более раз, чем был активирован

let generator = UINotificationFeedbackGenerator() 
generator.notificationOccurred(.Warning) 

и

let generator = UIImpactFeedbackGenerator(style: .Heavy) 
generator.impactOccurred() 

Сегодня я получил новый вид ошибки, как это, и не мог найти проблему. Есть ли у вас какие-либо идеи?

UIFeedbackHapticEngine _deactivate] called more times than the feedback engine was activated 

Детали:

Fatal Exception: NSInternalInconsistencyException 
0 CoreFoundation     0x1863e41c0 __exceptionPreprocess 
1 libobjc.A.dylib    0x184e1c55c objc_exception_throw 
2 CoreFoundation     0x1863e4094 +[NSException raise:format:] 
3 Foundation      0x186e6e82c -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] 
4 UIKit       0x18cc43fb8 -[_UIFeedbackEngine _deactivate] 
5 UIKit       0x18cad781c -[UIFeedbackGenerator __deactivateWithStyle:] 

ответ

7

UIImpactFeedbackGenerator не Потокобезопасная, поэтому убедитесь, что вы вызываете generator.impactOccurred() синхронно, а не в dispatch_async или в другом асинхронном потоке.

+0

Это правильный ответ, но, похоже, немного ввести в заблуждение, чтобы не использовать его в dispatch_async. Я думаю, что вы имеете в виду, что он должен назвать это только из одного потока. На самом деле ему может понадобиться вызвать dispatch_async, чтобы добраться до этого единственного потока. –

 Смежные вопросы

  • Нет связанных вопросов^_^