2012-06-23 95 views
0

我现在用的样品在这里提供的,并使用一个普通的UITableView中的代码: http://tirania.org/monomac//archive/2012/Jan.html本地堆栈跟踪崩溃

我以为一切都很好,直到我增加了很多消息。然后当消息对于屏幕太多时,我看到它崩溃(看起来像是一个单元重用问题)。

我的主要问题是stacktrace几乎没有说什么,所以任何人在普通的UITableView中使用这段代码,并想分享一些代码?

这里是我的GetCell方法和堆栈跟踪如下:

 
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
    { 
     ChatMessage msg = _items[indexPath.Row]; 
     bool isLeft = msg.User.UserId != _controller._gamebackend.GetLocalUser().UserId; 
     var cell = tableView.DequeueReusableCell (isLeft ? BubbleCell.KeyLeft : BubbleCell.KeyRight) as BubbleCell; 
     if (cell == null) 
      cell = new BubbleCell (isLeft); 

     cell.Update (GetBubbleText(msg)); 
     cell.SelectionStyle = UITableViewCellSelectionStyle.None; 
     return cell; 
    } 

 
2 libsystem_c.dylib     0x31f247ed _sigtramp + 48 
Jun 24 00:27:53 unknown  3 Foundation       0x3716a137 probeGC + 62 
Jun 24 00:27:53 unknown  4 Foundation       0x3718983b -[NSConcreteMapTable removeObjectForKey:] + 34 
Jun 24 00:27:53 unknown  5 UIKit        0x353e13a1 -[_UIImageViewPretiledImageWrapper dealloc] + 80 
Jun 24 00:27:53 unknown  6 libobjc.A.dylib      0x34abe175 _objc_rootRelease + 36 
Jun 24 00:27:53 unknown  7 libobjc.A.dylib      0x34abfe57 objc_release + 38 
Jun 24 00:27:53 unknown  8 libobjc.A.dylib      0x34abeead _ZN12_GLOBAL__N_119AutoreleasePoolPage3popEPv + 224 
Jun 24 00:27:53 unknown  9 libobjc.A.dylib      0x34abedc9 _objc_autoreleasePoolPop + 12 
Jun 24 00:27:53 unknown  10 CoreFoundation      0x32a6dcff _CFAutoreleasePoolPop + 18 
Jun 24 00:27:53 unknown  11 QuartzCore       0x31fba91d _ZN2CA7Display11DisplayLink8dispatchEyy + 340 
Jun 24 00:27:53 unknown  12 QuartzCore       0x31fba7c5 _ZN2CA7Display16IOMFBDisplayLink8callbackEP21__IOMobileFramebufferyyyPv + 60 
Jun 24 00:27:53 unknown  13 IOMobileFramebuffer     0x32ba8001 IOMobileFramebufferVsyncNotifyFunc + 156 
Jun 24 00:27:53 unknown  14 IOKit        0x34e3d60d IODispatchCalloutFromCFMessage + 188 
Jun 24 00:27:53 unknown  15 CoreFoundation      0x32ae6f13 __CFMachPortPerform + 362 
Jun 24 00:27:53 unknown  16 CoreFoundation      0x32af1523 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 38 
Jun 24 00:27:53 unknown  17 CoreFoundation      0x32af14c5 __CFRunLoopDoSource1 + 140 
Jun 24 00:27:53 unknown  18 CoreFoundation      0x32af0313 __CFRunLoopRun + 1370 
Jun 24 00:27:53 unknown  19 CoreFoundation      0x32a734a5 CFRunLoopRunSpecific + 300 
Jun 24 00:27:53 unknown  20 CoreFoundation      0x32a7336d CFRunLoopRunInMode + 104 
Jun 24 00:27:53 unknown  21 GraphicsServices     0x32bc0439 GSEventRunModal + 136 
Jun 24 00:27:53 unknown  22 UIKit        0x35052cd5 UIApplicationMain + 1080 
+0

如果我删除了单元重用代码,则错误消失。我只是一直在创建单元格。但是,即使性能是好的,一切都可以正常工作:-) –

回答

1

还有另一种解决办法:存储所有你在一个类级列表创建细胞。

但是,这应该不会发生在从UITableViewCells派生的类型中,那么您是否也可以在http://bugzilla.xamarin.com上提交错误,以便将来有望避免此错误?

+0

我将尝试汇集一个示例项目,演示一旦我从Google IO返回并将其提交到bugzilla站点后,问题就会展现出来。 –