我正在开发一个应用程序,我必须在字典中保存一些数据,然后我必须加载该数据并向用户显示用户保存的选项。 当我从字典中获取数据时,它第二次崩溃而不是第一次崩溃并且每次都会给出不同的崩溃日志。 像
-[UIDeviceRGBColor objectAtIndex:]: unrecognized selector sent to instance 0x68c22d0
或
[UIControlTargetAction count]: unrecognized selector sent to instance 0x68683d0
或
0 : <CFString 0x687cb30 [0x124eb38]>{contents = "dish1"} = UIDeviceWhiteColorSpace 0 0.5
我的代码就是这个
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == menuTableView) {
[optionsView addSubview:topScrollView];
optionFlag=NO;
[self optionScreenMethod:indexPath.row];
NSString *dishSelect=[NSString stringWithFormat:@"dish%d",indexPath.row];
NSMutableArray *dishesArray=[[NSMutableArray alloc]init];
NSMutableArray *dishDicArray=[[NSMutableArray alloc]init];
dishesArray=[dishDictionary objectForKey:dishSelect];
NSLog(@"%d",[dishesArray count]);
if ([dishesArray count]>0) {
optionFlag=YES;
}else{
for (int i=0; i<[tempStr intValue]; i++) {
DishData *dishData=[[DishData alloc]init];
dishData.dishTitle=(NSMutableString*)[[tableMenuArray objectAtIndex:indexPath.row] itemName];
dishData.accompArrayIndex=nil;
dishData.cookArrayIndex=nil;
dishData.dishComent=nil;
dishData.nonMandArray=nil;
[dishDicArray addObject:dishData];
}
[dishDictionary setObject:dishDicArray forKey:dishSelect];
}
//[dishesArray release];
//[dishDicArray release];
dishSelectRow=indexPath.row;
// NSString *dishSelect=[NSString stringWithFormat:@"dish%d",indexPath.row];
[isSelected removeAllObjects];
[isSelectedAccompArray removeAllObjects];
[isSelectedCookArray removeAllObjects];
[self defaultDataArray];
[accompmentTblView reloadData];
[cookingTblView reloadData];
[nonMandTblView reloadData];
[nonMandtSelectOptionArray removeAllObjects];
optionsView.hidden=NO;
}
答案 0 :(得分:0)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//If possible make a singleton instance here of "dishDictionary" may solve your issue of crashing (Rather diclare it at the class level)
//if(!dishDictionary)
dishDictionary=[[NSMutableDictionary alloc]init];
..........
//Replace this line :
NSMutableArray *dishDicArray=[[NSMutableArray alloc]init];
to
NSMutableArray *dishesArray=[[NSMutableArray alloc]initWithArray:[dishDictionary objectForKey:dishSelect]];
and remove
dishesArray=[dishDictionary objectForKey:dishSelect];
..........
//may will not crash than try this
}