【发布时间】:2012-08-04 14:11:55
【问题描述】:
我有一个名为getProjects 的方法。在我的方法中,我从 json 解析数据。我将项目的name 和id 保存在我的实例变量projectsArray 中,这是一个NSMutableArray。
问题是我有一个名为 writeFile 的按钮 (IBAction),如果我尝试在单击时记录数组,我的应用程序会崩溃。错误消息是ESC_BAD_ACCESS。但为什么?我正在使用 ARC。
`Method getProjects
- (void)getProjects {
int count = 0;
self.projectsArray = [NSMutableArray arrayWithCapacity:10];
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@projects.json", urlPath]]];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
NSArray *projects = [parser objectWithString:json_string error:nil];
for (NSDictionary *project in projects) {
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:2];
[dict setObject:[project objectForKey:@"name"] forKey:@"name"];
[dict setObject:[project objectForKey:@"id"] forKey:@"id"];
[self.projectsArray insertObject:dict atIndex:count];
[self.selectProject addItemWithTitle:[project objectForKey:@"name"]];
count++;
}
}
我调用applicationDidFinishLaunching中的方法
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
[self getProjects];
NSLog(@"%@", self.projectsArray);
}
我的 applicationDidFinishLaunching 中的日志返回我的数组。
【问题讨论】:
-
"ESC_BAD_ACCES" - 我不知道这样的错误消息。 (提示:正字法)
-
writeFile在什么类中,如果不是应用程序委托,运行该方法的对象如何获取其对项目数组的引用? -
该属性被声明为 assign 并且 writeFile 正在运行 appDelegate。对不起,我的意思是“EXC_BAD_ACCESS”。
-
我将分配更改为保留,现在它可以工作了。但为什么呢?
标签: cocoa variables nsmutablearray automatic-ref-counting instance