菜鸟教程小白 发表于 2022-12-13 13:37:46

ios - 在 UITableview reloadData 上报告崩溃


                                            <p><p>我从 Crashlytics 收到一份崩溃报告,该报告总是在同一个地方,但我无法复制崩溃。 </p>

<p>这似乎只是 iOS 9 上的用户,而且只是非常偶尔。我不确定这是代码问题还是其他问题。最后一行提到 <code>libdispatch.dylib</code> 丢失,再次,不确定是否相关。</p>

<p>Crashlytics 表示崩溃发生在 <code>MMDetailTableVC.m</code> 第 1407 行,即 <code>reloadData</code> 行。</p>

<p>报告内容如下:</p>

<pre><code>Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000001

Thread : Crashed: com.apple.main-thread
0libobjc.A.dylib         0x20f0fae2 objc_msgSend + 1
1CoreFoundation            0x2168b91b - + 310
2Foundation                0x21e77e2d _NSDescriptionWithLocaleFunc + 60
3CoreFoundation            0x217091a3 __CFStringAppendFormatCore + 7986
4CoreFoundation            0x21707255 _CFStringCreateWithFormatAndArgumentsAux2 + 80
5CoreFoundation            0x2171f559 _CFLogvEx2 + 96
6CoreFoundation            0x2171f9af _CFLogvEx3 + 118
7Foundation                0x21f3f4f7 _NSLogv + 126
8Foundation                0x21e8679d NSLog + 28
9UIKit                     0x259b45fb - + 1818
10 Simple Meeting Minutes    0x91fff - (MMDetailTableVC.m:1407)
11 Simple Meeting Minutes    0xa2edf - (MMItemViewController.m:526)
12 UIKit                     0x25905771 - + 80
13 UIKit                     0x25a86c71 - + 140
14 UIKit                     0x25905771 - + 80
15 UIKit                     0x25905701 - + 64
16 UIKit                     0x258ed61f - + 446
17 UIKit                     0x258ed74b - + 746
18 UIKit                     0x25905051 - + 616
19 UIKit                     0x25904cbf - + 646
20 UIKit                     0x258fd5d7 - + 642
21 UIKit                     0x258ce119 - + 204
22 UIKit                     0x258cc757 _UIApplicationHandleEventQueue + 5134
23 CoreFoundation            0x216f9257 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
24 CoreFoundation            0x216f8e47 __CFRunLoopDoSources0 + 454
25 CoreFoundation            0x216f71af __CFRunLoopRun + 806
26 CoreFoundation            0x21649bb9 CFRunLoopRunSpecific + 516
27 CoreFoundation            0x216499ad CFRunLoopRunInMode + 108
28 GraphicsServices          0x228c3af9 GSEventRunModal + 160
29 UIKit                     0x25935fb5 UIApplicationMain + 144
30 Simple Meeting Minutes    0x8c59f main (main.m:16)
31 libdispatch.dylib         0x212fc873 (Missing)
</code></pre>

<p>这是我的 <code>saveItemEntry</code> 代码,它似乎总是发生崩溃的地方。</p>

<pre><code>- (void)saveItemEntry:(MMitem *)item{

    if (item)
    {
         NSString *resultStr = ;

      if ()
      {
            // all good so close form and refresh data
            ;

            ;

            // or if there is an error result then display message
      }
      else if ()
      {
            ;
            ;
      }
      // for any other error do nothing
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我们不知道你是否在主线程中调用了这个方法。</p>

<p>tableview 也需要时间来重新加载它的单元格。所以如果你能把这些代码添加到 <code>dispatch_get_main_queue</code></p> 那就太好了

<pre><code>dispatch_async(dispatch_get_main_queue(), ^(void){
   ;
   ;
}
</code></pre>

<p>和</p>

<pre><code>dispatch_async(dispatch_get_main_queue(), ^(void){
   ;
   ;
}
</code></pre>

<p>如果我们正在使用 <code>dispatch_async(dispatch_get_main_queue(), ^(void){</code> 来刷新任何通知或委托(delegate)的 UI,这将是非常安全的 </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 UITableview reloadData 上报告崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34849636/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34849636/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 UITableview reloadData 上报告崩溃