2017-07-17 89 views
3

我正在實現鍵盤擴展。但有時它會在啓動時遇到SIGQUIT信號。iOS鍵盤擴展SIGQUIT啓動時

的情況如下:

  1. 點擊TextView的,和鍵盤出現
  2. 點擊任何東西,隱藏鍵盤
  3. 切換到另一個應用程序
  4. 點擊TextView的,等待鍵盤出現

CRASH !!! SIGQUIT

Exception Type: EXC_CRASH (SIGQUIT) 
Exception Codes: 0x0000000000000000, 0x0000000000000000 
Exception Note: EXC_CORPSE_NOTIFY 
Termination Signal: Quit: 3 
Termination Reason: Namespace SIGNAL, Code 0x3 
Terminating Process: launchd [1] 
Triggered by Thread: 0 
Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x000000018819b260 semaphore_wait_trap + 8 
1 libdispatch.dylib    0x00000001880895e8 _os_semaphore_wait + 24 
2 libdispatch.dylib    0x0000000188088ca0 _dispatch_semaphore_wait_slow + 140 
3 DTXConnectionServices   0x00000001012a9ec4 0x10129c000 + 57028 
4 DTXConnectionServices   0x00000001012a95ec 0x10129c000 + 54764 
5 libfsmonitor_interpose.dylib 0x000000010128a040 0x101288000 + 8256 
6 libfsmonitor_interpose.dylib 0x000000010128a3b4 0x101288000 + 9140 
7 dyld       0x00000001013326b0 ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 356 
8 dyld       0x00000001013328e0 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 36 
9 dyld       0x000000010132db44 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 368 
10 dyld       0x000000010132cb74 ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 136 
11 dyld       0x000000010132cc30 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 84 
12 dyld       0x000000010131e440 dyld::initializeMainExecutable() + 140 
13 dyld       0x00000001013226bc dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3640 
14 dyld       0x000000010131d044 _dyld_start + 68 

在回溯,這是所有的系統調用。擴展代碼並沒有真正運行!每次碰撞發生時,斷點都是不同的。

我嘗試了很多東西,但都沒有幫助。

有誰知道解決方案?

+0

有沒有人解決方法我有同樣的問題 – ANE

回答

2

通常,這意味着iOS'啓動進程終止您的鍵盤,由於「行爲不當」(some info here)的某些原因。這通常與啓動時間有關,因此請確保您的鍵盤快速啓動(理想情況下小於一秒)。您可以使用帶有時間分析器的儀器:使用兩個文本字段打開一個應用程序,並在它們之間多次切換以獲取足夠的數據。需要注意的是回溯在崩潰日誌是在這種情況下無用並沒有表現出任何原因崩潰(因爲它不是一個崩潰 - 它只是信號送到我的launchd這使您的應用程序退出)

而且,自iOS11發佈此行爲開始越來越頻繁,我假設它與此檢查器的邏輯有關的一些問題。

+0

謝謝!你的回答對我來說非常有用。但帶有時間分析器的樂器將在鍵盤生命週期中收集** All **耗時。我怎樣才能分析啓動時間的耗時? –

+0

您可以在樂器中使用https://monosnap.com/file/pizrOSzqXsFlAha1t5KFNIEtZLcePN這個工具來測量動態庫+靜態初始化所花費的時間。同時檢查你是否消耗超過40Mb的RAM,否則你的reyboad也會被殺死。 –