【问题标题】:iPhone UITableVIew reloaddata causes the app to crashiPhone UITableVIew reloaddata 导致应用程序崩溃
【发布时间】:2010-12-03 22:00:27
【问题描述】:

我正在使用 UITableView 实现类似于分页的功能。 视图控制器继承自 UIViewController 并具有从 Nib 与 Outlet 绑定的表视图。我维护一个数组来存储表视图中可见的当前对象。单击下一个和上一个按钮时,我删除所有对象,然后添加要显示的新对象,然后是 [self.tableView reloadData]。应用程序此时似乎崩溃了。我同样使用 iOS 4.1。

在使用 iOS 3.1 时,该功能似乎可以工作。任何人都可以指出原因吗?

【问题讨论】:

  • 错误是什么?堆栈崩溃时是什么样的?我们需要更多信息才能提供帮助。
  • 0x06d61dc0 在 ?? 0x0269bb6c in CFRelease 0x0277d959 in -[NSArrayM removeObjectAtIndex:] 0x0272d973 in -[NSMutableArray removeAllObjects] 0x003ce48d in -[UITableView reloadData] 0x0003b1a8 in -[FlightStatusResultsByRoute refreshDisplay:] at FlightStatusResultsByRoute.m:158 0x000d621a in __NSFireDelayedPerform 0x02765f73 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION __CFRunLoopDoTimer 中的 0x027675b4 __CFRunLoopRun 中的 0x026c3dd9 CFRunLoopRunSpecific 中的 0x026c3350 CFRunLoopRunInMode 中的 0x026c3271 GSEventRunModal 中的 0x02fdf00c GSEventRun 中的 0x02fdf0d1
  • 您可以在清理数组后尝试将数组设置为 nil。似乎表格单元格在重新加载之前尝试从数组中读取数据。

标签: iphone uitableview


【解决方案1】:

我认为它必须与做事的时间有关(更新数据源、委托和重新加载数据)

即使没有......这个项目已经做了你想做的事情我相信: https://github.com/honcheng/PanelTableView 你可以在这里找到它的视频: http://www.honcheng.com/

我没试过,但似乎可以;)

【讨论】:

  • 数据源和委托被设置为NIB中的UIViewCOntroller类。我认为我们不需要用我的实现来更新它
  • 问题是他的功能在 ios 3.1 中有效,但在 4.0 及更高版本中无效
【解决方案2】:

看起来有些东西被过度发布了,或者可能被过度删除了。我看到一个 [NSMutableArray removeAllObjects] 后跟一个 [NSMutableArray removeObjectAtIndex],这将是一个真正的问题。

【讨论】:

  • 如果是内存管理的问题,iOS 3.1 应该没问题,但相反它可以工作。
  • 不幸的是,情况并非如此。操作系统发生了很多变化,细微的事情可以产生巨大的影响。例如,线程处理更改可以显着改变事件发生的顺序,在早期操作系统下可能会出现的潜在问题,但在新操作系统下可能会突然出现。 WaiLam 关于清空数组的评论是一个很好的评论:我的猜测是,如果你在清空它之后将它设置为 nil,然后再重新填充它,你会发现错误停止了(但新的 tableview 可能会是空的)。跨度>
猜你喜欢
  • 2021-05-02
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2016-06-04
  • 2011-08-24
相关资源
最近更新 更多