我知道这是基本的客观C问题,但我有严重的问题。我有一个NSMutable数组,我在connectionDidFinishLoading中填充了值。我可以在NSLog中看到正确分配了值。但是当我试图在DidSelectRow中获取这些值时(因为我使用的是表格视图,我得到了一个BAD_ACESS错误)
这是我的代码:
@implementation MainMap
{
NSMutableArray *condition ;
}
..
- (void)viewDidLoad
{
[super viewDidLoad];
}
...
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
condition= [NSMutableArray array];
..adding objects..
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//app crashes in here
NSLog(@"Condition of pressed item is %@",[condition objectAtIndex:indexPath.row]);
}
如果我将condition= [NSMutableArray array];
放在ViewDidLoad中,我会得到SIGBART
。
此外,我尝试将声明放在.h文件中并将其作为属性,然后在.m中进行合成,但仍然没有。也许我错过了什么,你能解决它吗?
答案 0 :(得分:2)
只需尝试[NSMutableArray new]
而不是[NSMutableArray array]
。然后,您应该在condition
- 方法中发布dealloc
。
否则您可以启用ARC(http://longweekendmobile.com/2011/09/07/objc-automatic-reference-counting-in-xcode-explained/)。使用ARC,您不能自己处理引用计数。