请看以下方法:
-(void)updateProfile:(Profile *)profile WithJSON:(NSString *)JSON;
{
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *object = [parser objectWithString:JSON error:nil];
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setPositiveFormat:@"#,##0"];
profile.displayName = [object valueForKey:@"displayName"];
profile.profileURL = [object valueForKey:@"profileURL"];
NSString *rep = [object valueForKey:@"reputation"];
profile.reputation = [[nf numberFromString:rep] intValue];
//[rep release]; <-Why not release?
[nf release];
//[object release]; <-Why not release?
[parser release];
}
我已经注释掉了两行,如果没有,则会给我EXC_BAD_ACCESS 有人可以向我解释为什么发布这些对象是错误的吗?
答案 0 :(得分:14)
您不应该发布它,因为您没有+alloc
,-retain
或-copy
它。像+objectWith…
这样的便捷构造函数会返回自动释放的对象。
答案 1 :(得分:5)
更好的问题是:为什么应该你释放它?你有什么办法要求拥有对象的所有权?在这种情况下,答案是“什么都没有”。既然你没有它,你就不能很好地发布它。