我有一个UITableView其中numberOfSectionsInTableView和numberOfRowsInSection被调用两次,第二次运行的范围问题。如果我掩盖了这个问题,我在第一次运行cellForRowAtIndexPath时遇到了一个范围问题。表视图数据源运行两次,作用域问题
大部分数据全部来自在viewDidLoad期间配置的NSDictionary。我也有一个NSArray在同一时间配置。一旦设定,它们不会被更改或释放。
当第一次调用numberOfSectionsInTableView时,没关系。根据需要计算元素等,然后立即调用第二次(不知道为什么)。在第二次运行时,它无法访问NSDictionary或NSArray项目。即使在尝试NSLog时也会崩溃。例如:
NSLog(@"theMainDictionary %@",theMainDictionary);
通常会导致EXC_BAD_ADDRESS但有时这样的事情:
theMainDictionary <_UITableViewSeparatorView: 0x4e73680; frame = (0 307; 320 1); opaque = NO; autoresize = W; layer = <CALayer: 0x4e4bf20>>
同样,这同一条线路运行正常(登录预期字典)第一次运行通过。
如果我通过返回一个固定的NSInteger来掩盖问题,numberOfRowsInSection然后做同样的事情。如果我屏蔽numberOfRowsInSection,cellForRowAtIndexPath在第一次运行时崩溃。虽然同样的问题 - 无法访问MainDictionary或相关的NSArray。
我不明白为什么他们运行两次 - 没有reloadData任何地方。我也不知道为什么第二个电话的运行方式不同。任何帮助非常感谢。
你能展示整个.m文件的代码吗? – 2011-05-01 02:41:37