2017-07-17 19 views
3

キーボード拡張機能を実装しています。しかし、時にはそれは起動時にSIGQUIT信号に遭遇する。次のようにiOSキーボード拡張SIGQUIT起動時

状況は次のとおりです。

  1. 何かをタップして、別のアプリ
  2. にキーボード
  3. 変更を隠すのTextViewをクリックすると、キーボードが
  4. を表示さのTextViewをクリックして待ちますキーボードが表示される

クラッシュ!バックトレースで

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 

SIGQUITは、これは、すべてのシステムコールです。拡張コードは実際には実行されていません! そして、クラッシュが発生するたびに、ブレークポイントはすべて異なります。

私はたくさんのことを試みましたが、どれも役に立っていません。

誰にも解決策はありますか?

+0

誰にでも解決策があります。同じ問題があります。 – ANE

答えて

2

通常、これは、「誤動作」(some info here)の理由により、iOS 'launchdプロセスがキーボードを終了したことを意味します。起動時間に非常に関連することが多いので、キーボードがすばやく(理想的には1秒未満で)起動することを確認してください。時間プロファイラでInstrumentsを使用することができます:2つのテキストフィールドを持つアプリケーションを開き、それらの間を複数回切り替えて十分なデータを取得します。クラッシュログでバックトレースが、この場合は役に立たないとクラッシュのために何らかの理由を示さないことに注意してください(これはクラッシュではないので - それはちょうどあなたのアプリはQUIT行わ私ののlaunchdを送信し、信号の)

また、 iOS11がこの動作をリリースして以来、このチェッカーのロジックに関する問題が発生していると思われます。

+0

ありがとう!あなたの答えは私にとって非常に便利です。しかし、タイムプロファイラを備えた計測器では​​、キーボードのライフサイクルで** All **時間を費やすことがあります。起動時に時間がかかるだけを分析するにはどうすればよいですか? –

+0

計測器でこのツールをhttps://monosnap.com/file/pIZrOSzqXsFlAha1t5KFNIEtZLcePNを使用して、ダイナミックライブラリ+静的初期設定の時間を測定することができます。また、40Mバイト以上のRAMを消費していないことを確認してください。そうしないと、reyboadも強制終了されます。 –

関連する問題