启动时iOS键盘扩展SIGQUIT

时间:2017-07-17 07:21:30

标签: ios keyboard signals

我正在实施键盘扩展程序。但有时它会在启动时遇到SIGQUIT信号。

情况如下:

  1. 单击textView,键盘出现
  2. 点按任意内容并隐藏键盘
  3. 更改为其他应用
  4. 单击textView并等待键盘出现
  5. 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
    

    在Backtrace中,它是所有系统调用。扩展代码并没有真正运行! 每次碰撞发生时,断点都是不同的。

    我尝试了很多东西,但没有一个能帮到你。

    有谁知道解决方案?

1 个答案:

答案 0 :(得分:3)

通常,这意味着iOS' launchd 进程因“行为不端”(some info here)的原因而终止了您的键盘。它通常与启动时间有关,因此请确保键盘快速启动(理想情况下不到一秒钟)。您可以将仪器与时间分析器一起使用:打开具有两个文本字段的应用程序,并在它们之间多次切换以获得足够的数据。请注意,在这种情况下,崩溃日志中的回溯是无用的,并且没有显示崩溃的任何原因(因为它不是崩溃 - 只是发出了我的 launchd 的信号你的应用退出)

此外,自从iOS11发布以来,这种行为的开始越来越频繁,而且我认为它与这个检查器的逻辑有关。