Objective c 重载数据会被调用两次?
我已经为我的应用程序研究这个代码很长时间了。用户添加相册时,会将其添加到RootViewController中的数组(ListoItems)中。然后,不同的类调用它来更新(重载数据)。在查看了一些nslog之后,它执行以下操作Objective c 重载数据会被调用两次?,objective-c,cocoa-touch,uitableview,ios4,reloaddata,Objective C,Cocoa Touch,Uitableview,Ios4,Reloaddata,我已经为我的应用程序研究这个代码很长时间了。用户添加相册时,会将其添加到RootViewController中的数组(ListoItems)中。然后,不同的类调用它来更新(重载数据)。在查看了一些nslog之后,它执行以下操作 numberofrowsin部分更新行数(正确) cellForRowAtIndexPath显示行(NSLog显示列表项是正确的) numberOfRowsInSection重复并删除所有新数据 cellforrowatinexpath再次重复,它显示除新数据以外的所有
更新行数(正确)numberofrowsin部分
显示行(NSLog显示列表项是正确的)cellForRowAtIndexPath
重复并删除所有新数据numberOfRowsInSection
再次重复,它显示除新数据以外的所有内容cellforrowatinexpath
[self.tableView reloadData]代码>一次
我已经检查了所有的NSTimer,我甚至让应用程序在控制台上停留了大约一分钟,却什么也没出现
请帮忙!
库尔顿
PS:如果您需要任何代码,请询问
编辑:这里是一个示例NSLog,说明发生了什么
Number Of Rows: 3
Array: (One, Two, Three)
单元格文本:1
单元格文本:两个
单元格文本:三
---添加“四”单元格---
编辑:完整的RootViewContoller.m
REMOVED
PS:很抱歉代码太长,但再次感谢 表格视图中显示的每个单元格都会重复CellForRowAtIndexPath,需要更多有关NSLogs放置位置的信息。表格视图中显示的每个单元格都会重复CellForRowAtIndexPath,需要更多有关NSLogs放置位置的信息。在numberOfRowsInSection
的实现中的某处添加断点。当点击断点时,切换到调试器视图并查看堆栈跟踪。对你接到的两个电话都这样做。
向下查看堆栈,直到找到属于您的方法(显示为粗体)。您应该能够找出调用的位置reloadData
如果对于断点命中,您找不到任何自己的方法作为调用源,那么可能您确实有一个NSTimer或其他东西为您调用它
愉快的调试:)在numberOfRowsInSection
的实现中的某处添加断点。当点击断点时,切换到调试器视图并查看堆栈跟踪。对你接到的两个电话都这样做。
向下查看堆栈,直到找到属于您的方法(显示为粗体)。您应该能够找出调用的位置reloadData
如果对于断点命中,您找不到任何自己的方法作为调用源,那么可能您确实有一个NSTimer或其他东西为您调用它
愉快的调试:)不确定这是否有帮助,但尝试在视图中注释[超级视图将显示:动画]
,如果您的课堂上有这样的内容。这似乎是sdk新版本中的一个bug
- (void)viewWillAppear:(BOOL)animated {
//[super viewWillAppear:animated];
}
不确定这是否有帮助,但尝试在视图中注释[超级视图将显示:动画]
如果您的课堂上有该注释,则注释将显示。这似乎是sdk新版本中的一个bug
- (void)viewWillAppear:(BOOL)animated {
//[super viewWillAppear:animated];
}
如果其他人有此问题,只需使用NSTimer每隔X秒重新加载一次数据。我甚至在Aray上做了一个小计数器,填充表中当前的数据和行,看看是否需要更新。如果没有,它不会做任何事情。如果其他人有此问题,只需使用NSTimer每隔X秒重新加载一次数据。我甚至在Aray上做了一个小计数器,填充表中当前的数据和行,看看是否需要更新。如果没有,则没有任何作用。我看不到您放置NSLog代码的区域(可能是一个示例代码,说明您是如何获得这些NSLog的)。我不知道这些是如何导致问题的。只是添加了我的RootViewController.mI没有看到您放置NSLog代码的区域(可能是一个示例代码,说明您如何获得这些NSLog)。我不知道这些是如何导致问题的。只是添加了我的RootViewController.mAdded断点,但应用程序不会加载。这不好,因为我稍后添加内容。即使在应用程序启动后,您也可以添加断点。只需启动应用程序,并获得一个点,您认为您即将加载您提到的数据。然后转到XCode,添加断点并继续使用应用程序,直到达到断点。这样,您就不会在每次重新加载数据时都出现在每个屏幕上。更酷的方法是使用条件断点。到目前为止,我从未使用过它们,所以我无法帮助您解决这些问题,但我知道它们存在:断点仅在满足条件时触发。添加了断点,但应用程序不会加载。这不好,因为我稍后添加内容。即使在应用程序启动后,您也可以添加断点。只需启动应用程序,并获得一个点,您认为您即将加载您提到的数据。然后转到XCode,添加断点并继续使用应用程序,直到达到断点。这样,您就不会在每次重新加载数据时都出现在每个屏幕上。更酷的方法是使用条件断点。到目前为止,我还没有使用过它们,所以我无法帮助您解决这些问题,但我知道它们是存在的:断点只有在满足条件时才会触发。