Objective c 重载数据会被调用两次?

Objective c 重载数据会被调用两次?,objective-c,cocoa-touch,uitableview,ios4,reloaddata,Objective C,Cocoa Touch,Uitableview,Ios4,Reloaddata,我已经为我的应用程序研究这个代码很长时间了。用户添加相册时,会将其添加到RootViewController中的数组(ListoItems)中。然后,不同的类调用它来更新(重载数据)。在查看了一些nslog之后,它执行以下操作 numberofrowsin部分更新行数(正确) cellForRowAtIndexPath显示行(NSLog显示列表项是正确的) numberOfRowsInSection重复并删除所有新数据 cellforrowatinexpath再次重复,它显示除新数据以外的所有

我已经为我的应用程序研究这个代码很长时间了。用户添加相册时,会将其添加到RootViewController中的数组(ListoItems)中。然后,不同的类调用它来更新(重载数据)。在查看了一些nslog之后,它执行以下操作

  • numberofrowsin部分
    更新行数(正确)
  • cellForRowAtIndexPath
    显示行(NSLog显示列表项是正确的)
  • 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,添加断点并继续使用应用程序,直到达到断点。这样,您就不会在每次重新加载数据时都出现在每个屏幕上。更酷的方法是使用条件断点。到目前为止,我还没有使用过它们,所以我无法帮助您解决这些问题,但我知道它们是存在的:断点只有在满足条件时才会触发。