我有一個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