ios - 我的应用程序未在崩溃线程中列出
<p><p>根据崩溃报告,我发生了一次崩溃,这不是我的错。我希望那是真的。我已经用 NSZombies 对应用程序进行了概要分析,但它还没有在那里发生。以下是崩溃报告的摘录:</p>
<pre><code>Date/Time: 2015-11-23 19:40:34.34 -0600
Launch Time: 2015-11-23 18:49:43.43 -0600
OS Version: iOS 9.1 (13B143)
Report Version: 104
Exception Type:EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000c
Triggered by Thread:7
Thread 7 Crashed:
0 libobjc.A.dylib 0x34fcbac6 objc_msgSend + 6
1 UIFoundation 0x31e7242e + + 62
2 UIFoundation 0x31e675de + + 34
3 UIFoundation 0x31e68ae2 __NSStringDrawingEngine + 298
4 UIFoundation 0x31e68908 - + 144
5 UIKit 0x276aa488 - + 4864
6 UIKit 0x2771b40c - + 540
7 UIKit 0x2771b1e4 - + 88
8 UIKit 0x2771b15e - + 386
9 QuartzCore 0x26f8b6fc - + 228
10QuartzCore 0x26f75088 CABackingStoreUpdate_ + 1852
11QuartzCore 0x270619d0 ___ZN2CA5Layer8display_Ev_block_invoke + 52
12QuartzCore 0x26f745c8 CA::Layer::display_() + 1168
13QuartzCore 0x26f588a0 CA::Layer::display_if_needed(CA::Transaction*) + 204
14QuartzCore 0x26f58560 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 24
15QuartzCore 0x26f57a78 CA::Context::commit_transaction(CA::Transaction*) + 368
16QuartzCore 0x26f5772a CA::Transaction::commit() + 614
17QuartzCore 0x26f84ed2 CA::Transaction::release_thread(void*) + 310
18libsystem_pthread.dylib 0x3589e54c _pthread_tsd_cleanup + 508
19libsystem_pthread.dylib 0x3589e14e _pthread_exit + 86
20libsystem_pthread.dylib 0x3589db3c _pthread_wqthread + 1044
21libsystem_pthread.dylib 0x3589d718 start_wqthread + 8
</code></pre>
<p>我的应用程序没有在崩溃线程的任何地方列出。我有几个问题:</p>
<ol>
<li>如何解读此报告以找到崩溃的触发因素?我看到那里引用了 UILabel,而且我有很多,我怎么知道可能是哪个原因?</li>
<li>崩溃是否是中间的一行,并且报告显示前后的操作以提供上下文?</li>
</ol>
<p>感谢您的帮助。这种调试令人困惑。</p>
<p><strong>更新:2015 年 11 月 27 日:</strong></p>
<p>我是否需要确保在主线程上完成如下声明:</p>
<pre><code>UIView *lineView;
</code></pre>
<p>或仅进行如下修改:</p>
<pre><code>lineView = [ initWithFrame:CGRectMake(15, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)];
</code></pre>
<p>我无法确定需要在 GCD 调度中包装哪些内容以及可以在后台线程中执行哪些操作。我一直在按照建议的答案进行更改,但我仍然遇到同样的崩溃。</p>
<p>谢谢。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您正在崩溃,因为您违反了 <code>UIView</code> 后代只能在主线程上操作的规则。崩溃不一定是唯一的结果,但在 Apple 看来,这是完全可以接受的。</p>
<p>修复您的代码,以便将这部分工作分派(dispatch)给主线程。</p></p>
<p style="font-size: 20px;">关于ios - 我的应用程序未在崩溃线程中列出,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/33895299/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/33895299/
</a>
</p>
页:
[1]