【问题标题】:iPhone app crashing when turning device while keyboard is showing显示键盘时转动设备时 iPhone 应用程序崩溃
【发布时间】:2011-08-17 21:03:04
【问题描述】:

我有一个带有 webview 的 iPhone 应用程序,该应用程序在某些时候会重定向到论坛。

我注意到执行以下步骤时应用会崩溃:

1) 浏览论坛 (vBulletin)
2)打开一个线程并尝试发布消息
3)点击进入文本区域,这样键盘就会出现 4) 然后快速键入和/或转动设备

现在我的 iPhone 应用程序崩溃了。注意:crash只出现在很长的线程中,一定是内存或者CPU的问题?

无论如何,我不知道在哪里搜索问题,因为 XCode 4 没有显示任何崩溃日志!其次,当通过 Xcode(在设备上)运行应用程序时,它会崩溃而没有显示任何错误……(当然)无法通过模拟器重现崩溃。

如何解决这样的问题?


控制台:

May 10 00:23:36 unknown SpringBoard[29] <Warning>: Received memory warning. Level=1
May 10 00:23:36 unknown MobilePhone[582] <Warning>: Received memory warning. Level=1
May 10 00:23:37 unknown configd[25] <Notice>: jetsam: kernel memory event (91), free: 1198, active: 7537, inactive: 3482, purgeable: 0, wired: 17615
May 10 00:23:37 unknown SpringBoard[29] <Warning>: Received memory warning. Level=2
May 10 00:23:37 unknown MobilePhone[582] <Warning>: Received memory warning. Level=2
May 10 00:23:38 unknown configd[25] <Notice>: jetsam: kernel termination snapshot being created
May 10 00:23:38 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilephone[0xa185]) Exited: Killed: 9
May 10 00:23:38 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.skype.skype[0xf18]) Exited: Killed: 9
May 10 00:23:38 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.myCompanygmbh.myTestApp[0x9c47]) Bug: launchd_core_logic.c:3795 (24506):0
May 10 00:23:39 unknown com.apple.debugserver-50[598] <Warning>: 1 [0256/1503]: error: ::read ( 4, 0x2ffb19f0, 1024 ) => -1 err = Bad file descriptor (0x00000009)
May 10 00:23:39 unknown SpringBoard[29] <Warning>: Application 'Phone' exited abnormally with signal 9: Killed: 9
May 10 00:23:39 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.myCompanygmbh.myTestApp[0x9c47]) Bug: launchd_core_logic.c:3794 (24506):3
May 10 00:23:39 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.myCompanygmbh.myTestApp[0x9c47]) Bug: launchd_core_logic.c:3202 (24506):10
May 10 00:23:39 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.myCompanygmbh.myTestApp[0x9c47]) Working around 5020256. Assuming the job crashed.
May 10 00:23:39 unknown com.apple.launchd[1] <Warning>: (UIKitApplication:com.myCompanygmbh.myTestApp[0x9c47]) Job appears to have crashed: Segmentation fault: 11
May 10 00:23:39 unknown SpringBoard[29] <Warning>: Application 'Skype' exited abnormally with signal 9: Killed: 9
May 10 00:23:39 unknown SpringBoard[29] <Warning>: Application 'myTestApp' exited abnormally with signal 11: Segmentation fault: 11
May 10 00:23:40 unknown kernel[0] <Debug>: launchd[606] Builtin profile: container (sandbox)
May 10 00:23:40 unknown kernel[0] <Debug>: launchd[606] Container: /private/var/mobile/Applications/1D182D9C-6475-4B81-B409-E6245C60FE84 [69] (sandbox)
May 10 00:23:40 unknown ReportCrash[604] <Error>: Saved crashreport to /Library/Logs/CrashReporter/LowMemory-2011-05-10-002340.plist using uid: 0 gid: 0, synthetic_euid: 0 egid: 0
May 10 00:23:41 unknown Skype[606] <Warning>: ===== Starting HellKit (10021/3.0.0.250/IPHONE) =====
May 10 00:23:41 unknown Skype[606] <Warning>: Running on iOS device model iPhone3,1 (sysctlbyname('hw.machine'))
May 10 00:23:41 unknown Skype[606] <Warning>: Video capture constraints: 12 FPS, complexity mode 8
May 10 00:23:42 unknown MobilePhone[605] <Warning>: UI Mode is Phone
May 10 00:23:43 unknown SpringBoard[29] <Debug>: spd:___libspd_initialize_notify_block_invoke_1:214 spd woke up!
May 10 00:23:43 unknown SpringBoard[29] <Debug>: spd:_libspd_initialize_protocol:142 Registered notification port with spd [PID=609]
May 10 00:23:43 unknown SpringBoard[29] <Debug>: spd:spd_notification_socket_activity:279 Calling session client's callback on their queue for client [PID=606]
May 10 00:23:44 unknown sandboxd[610] <Notice>: Skype(606) deny file-write-create /Applications/.dat025e.000
May 10 00:23:44 unknown mediaserverd[19] <Warning>: 00:23:44.479 <SystemSoundServer> WARNING translating CMSession error: -12985 
May 10 00:23:44 unknown mediaserverd[19] <Warning>: 00:23:44.530 <SystemSoundServer> WARNING translating CMSession error: -12985 
May 10 00:23:44 unknown spd[609] <Error>: spd:spd_vet_socket:658 getpeername failure for client socket [FD=5]: Socket is not connected
May 10 00:23:44 unknown spd[609] <Error>: spd:spd_checkin_socket:954 Unable to check-in unsupported socket for client [PID=606]
May 10 00:23:44 unknown mediaserverd[19] <Error>: 00:23:44.585 <AudioQueueServer> AudioQueue: Error -12985 from AudioSessionSetClientPlayState(606)
May 10 00:23:45 unknown spd[609] <Error>: spd:spd_vet_socket:658 getpeername failure for client socket [FD=6]: Socket is not connected
May 10 00:23:45 unknown spd[609] <Error>: spd:spd_checkin_socket:954 Unable to check-in unsupported socket for client [PID=606]

【问题讨论】:

  • Safari 中是否也会发生这种崩溃?
  • 我无法在 iPhone 的 Safari 中重现它
  • 运行仪器并查看内存分配,也许这会给你一个提示。
  • 如果不旋转设备,长线程也不会崩溃?
  • 是的,它似乎在没有旋转的情况下也崩溃了。只有当我点击文本区域/文本框并尝试输入内容时,我才能准确重现崩溃。

标签: iphone objective-c uiwebview keyboard crash


【解决方案1】:

我曾经遇到过类似的问题,这里有一个可能的解决方案...

首先,这很可能是内存问题而不是 CPU 使用率,因此请确保在您的应用委托上实现 - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 委托方法...在此处添加一条日志行。

其次,模拟内存不足警告(模拟器在硬件菜单中有该选项)

现在观察您的应用程序在从线程到线程时是否崩溃(我怀疑它会崩溃)。

如果它确实崩溃了,那么在调试器中检查崩溃的 ivars(尤其是那些对应于 UI 组件并从 xib 加载的)。确保它们引用了它们应该引用的内容:当您的应用收到内存不足警告时,iOS 将自动卸载隐藏视图的 xib 资源,如果您在代码中的某个位置持有/依赖它们中的任何一个,则很可能如果这些 ivars 不是您的代码所期望的,应用程序将崩溃。

最后的建议是:下次遇到崩溃时,请确保包含堆栈跟踪。如果您的应用程序没有在调试模式下运行,您仍然可以使用“iPhone 配置实用程序”获取堆栈跟踪,该实用程序可以读取您设备的控制台输出

【讨论】:

  • 您好,尼克,感谢您的回答!你是对的,这是一个内存问题。 MemoryWarning 方法按预期调用,但我无法在模拟器中重现崩溃!我可以在那里做我想做的事,不会出现任何问题。但是现在如何发现问题呢?我确实有一个带有一些标签和其他子视图的隐藏视图。但是在第二个视图中它们并没有真正被引用。应用程序在我转动 iPhone 的那一秒就崩溃了,不久之后(例如,不是在再次访问隐藏视图时,而是在转动设备时!)。知道如何解决这个问题吗?
  • 我注意到以下情况:旋转 iPhone 时不需要出现崩溃。它发生在我单击页面的文本区域的那一刻。只有当网站有很多内容(内存使用等)时。所以旋转不是问题,它在某个地方有变量。现在我只需要找出如何获得这些。 :-p
  • 我在第一篇文章中添加了日志。感谢您阅读它,并对所有这些更新感到抱歉。 ;)
  • 尝试分析应用程序并查看崩溃时的内存使用情况...看起来它没有崩溃,但由于内存使用量过多而被 iOS 杀死。
  • 我还注意到你的 iPhone 3 内存很少,我几乎可以保证你的应用程序根据日志被系统杀死(1 级警告遍布整个地方,其他进程正在被杀)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多