我正在開發一個iPhone應用程序,並且在訪問委託上定義的一個NSArray時遇到問題。EXC_BAD_ACCESS訪問代理應用程序上的NSArray
我的應用程序有兩個選項卡。這兩個選項卡都有一個UITableView。我在委託中定義的一個NSArray中擁有這些表的數據源。
當我加載應用程序時,第一個選項卡加載正確的所有內容。這是第一個選項卡控制器的代碼的一部分:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
mainAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
return [delegate.dataArray count];
}
當調試器是return語句,我可以看到dataArray中有9個元素。代碼工作正常。
當我點擊第二個選項卡時,相同的代碼在第二個選項卡控制器中執行。不過,雖然調試器是return語句,我可以看到,代表是不是null,dataArray中顯示
{(INT)[$ VAR計數]}對象
在接下來的步驟,程序崩潰給EXC_BAD_ACCESS
我認爲在這一點dataArray已經發布,但我不知道什麼時候。我已經刪除了dealloc函數中的dataArray發佈調用。
這是dataArray中的屬性定義:
@property (nonatomic, retain) NSArray *dataArray;
任何人有任何想法?我完全迷失了。謝謝你的幫助!
您如何初始化數組?直接訪問伊娃是一個常見的陷阱(沒有「自我」),所以你的數組永遠不會被保留。 – albertamg 2011-05-26 21:23:04
dataArray是一個servlet的響應,我用json-framework解析它。代表didFinishLaunchingWithOptions是我初始化的地方。 'dataArray = [dict objectForKey:@「data」]' – 2011-05-26 21:25:46