【问题标题】:iOS Trying to figure out nasty crashiOS 试图找出令人讨厌的崩溃
【发布时间】:2012-06-20 21:04:25
【问题描述】:

通常,崩溃日志会指示可能发生这种情况的位置,但在这种情况下,这就是我得到的全部。假设我的主要视图是 A,我有 A、B 和 C 视图。

只有当我执行以下操作时才会发生这种情况:

从 A 到 B 再到 C,退出应用程序并加载其他一些应用程序。然后返回我的应用程序,返回 B,然后返回 A(这是崩溃的地方)。

编辑 - 我之前发布了错误的帖子...这里是正确的帖子

崩溃日志:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x4daf03bd
Crashed Thread:  7

Thread 7 name:  Dispatch queue: com.apple.root.default-priority
Thread 7 Crashed:
0   libobjc.A.dylib                 0x36f22f78 objc_msgSend + 16
1   Foundation                      0x33707d04 _NSDescriptionWithLocaleFunc + 44
2   CoreFoundation                  0x34f3a96e __CFStringAppendFormatCore + 7998
3   CoreFoundation                  0x34eb51d8 _CFStringCreateWithFormatAndArgumentsAux + 68
4   Foundation                      0x33707c2e +[NSString stringWithFormat:] + 54
5   MyGreatApp                      0x00061028 -[DataAccessor getProducts:div:productType:cat:searchsilver:completion:] (DataAccessor.m:301)
6   MyGreatApp                      0x00017196 __36-[products showNationalCategories]_block_invoke_0 (products.m:1688)
7   libdispatch.dylib               0x37886c52 _dispatch_call_block_and_release + 6
8   libdispatch.dylib               0x378927b4 _dispatch_worker_thread2 + 256
9   libsystem_c.dylib               0x35b45df4 _pthread_wqthread + 288
10  libsystem_c.dylib               0x35b45cc8 start_wqthread + 0

这是第 301 行(注意,进入字符串的所有对象都是 NSStrings):

NSString *urlStr = [NSString stringWithFormat:@"%@?api_key=%@&device[duid]=%@&division=%@",apiUrl,apiKey, duid, division];

【问题讨论】:

  • 与错误的UIImage 实例有关,但除非您发布一些代码,否则很难判断...
  • 启动gdb,告诉我们memcpy的参数是什么。
  • 我会大胆猜测一下,您的图像上的源或目标为 NULL,或者您可能正在尝试复制 0xFFFFFFFF 字节。
  • 我把钱花在你复制一些代码上,以一种奇特的非标准方式自定义后退按钮。
  • 在我的 OP 中,我不小心粘贴了线程 0,这完全不是有问题的线程。我现在更正了。我看到它指向的地方,但不知道它为什么抱怨

标签: ios crash segmentation-fault


【解决方案1】:

我的疯狂猜测是 viewDidUnload 中的某些东西正在被解除分配,这是依赖的并且没有被正确地重新初始化。在大多数情况下,viewDidUnload 在测试时不会被调用;这是我认为在您离开其他应用程序时可能发生的一件事。当视图出现在屏幕上时,对 A 的所有属性进行复查,并复查它们是否为非零。

【讨论】:

    【解决方案2】:

    我认为当呈现与您期望的视图控制器不同的视图控制器时,您的回调正在运行。我认为首先最好通过 NSLogging 在单独的代码行上找出错误的字符串指针。您还为那些字符串参数使用了任何 _block 装饰(或使用它们两次:在块内部和外部)——这会破坏它们的保留。

    【讨论】:

      猜你喜欢
      • 2012-09-02
      • 2015-01-07
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多