我有一个非常通用的表格视图。
刷新时,它将从Parse获取对象列表。在dispatch_async队列中分析这些数据,然后刷新表视图。大多数时候,它没有问题,但有时候reloadData()崩溃
是否因为tableView在调用时重新加载数据而崩溃? (当tableview为init时,可能会自动调用reloadData)如何避免此错误? (控制台中没有错误消息)
修改
我试图放<table cellspacing="1" cellpadding="1" id="ProductTable" class="tablesorter">
<thead>
<tr>
<th class="reorder-false reorder-block-left">Product Name</th>
<th class="">Description</th>
<th class="filter-select filter-onlyAvail">Status</th>
<th class="">Status Change Date</th>
</tr>
</thead>
<tbody id="ProductList">
<tr class="ProductRows" id="P_1906">
<td ><a style="text-decoration:none" href="/Product/Index/1906">Product #1</a></td>
<td><span class="">Test #1</span></td>
<td><span class="">Active</span></td>
<td><span class="time">2015/07/13 16:41:03</span></td>
</tr>
<tr class="ProductRows" id="P_1993">
<td ><a style="text-decoration:none" href="/Product/Index/1993">Test #2</a></td>
<td><span class="">Test #2</span></td>
<td><span class="">Backorder</span></td>
<td><span class="time">2015/08/25 10:39:23</span></td>
</tr>
</tbody>
</table>
$("#ProductTable").tablesorter({
theme: 'blue',
widthFixed: false,
widgets: [ "zebra", "filter", "resizable" ],
widgetOptions: {
filter_childRows: false,
filter_columnFilters: true,
filter_filteredRow: 'filtered',
filter_hideFilters: true,
filter_ignoreCase: true,
filter_liveSearch: true,
filter_onlyAvail: 'filter-onlyAvail',
filter_reset: 'button.reset',
filter_saveFilters: true,
filter_searchDelay: 300,
filter_serversideFiltering: false,
filter_startsWith: false,
filter_useParsedData: false,
filter_defaultAttrib: 'data-value'
}
});
,但不起作用
答案 0 :(得分:0)
当您的tableView(或您发送消息的任何对象)为零时,会发生这种情况。所以在你的异步调用在主队列上调度它之前的某个时候,你的tableView得到了反应。
查看此链接以获取一些信息:
http://www.touch-code-magazine.com/how-to-debug-exc_bad_access/
答案 1 :(得分:0)
在以下情况下,您将获得EXC_BAD_ACCESS错误:
您正在尝试访问未初始化的对象。
您正在尝试访问不再存在的对象。无论是被释放还是零。在ARC模式下,请确保获取要使用的对象的所有权。 您正在将消息传递给对象不理解的对象。
也可能发生错误的类型转换。就像下面的行,我试图用%@代替%d来访问一个int。
int myAwesomeInt = 9;
NSLog(@"%@", myAwesomeInt);
如何调试:
确定导致崩溃的原因。在查看特定视图控制器didLoad或委托方法或特定操作时是否崩溃。这通常有助于找到导致错误的对象。
(在你的情况下,看看你重新加载表时会发生什么。逐行进行堆栈跟踪,看看你的代码在重新加载过程中做了什么)
大多数时候,“NSZombies”可以帮助识别死亡对象。您可以通过编辑方案Product - &gt;来启用NSZombies。编辑方案 - &gt;诊断
如果仍然找不到根本原因,那么总是从子视图控制器向后转到父视图控制器,以查看需要保留哪个对象或需要正确传递哪些消息。 查看静态分析器和仪器以进行高级调试。
信用: The Basic Troubleshooting guide
希望这会有所帮助。祝你好运