2

看下面的方法:

-(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。
有人可以向我解释为什么释放这些对象是错误的吗?

4

2 回答 2

14
于 2010-02-15T20:46:35.527 回答
5

更好的问题是:为什么发布它?你做了什么来声明对该对象的所有权?在这种情况下,答案是“没有”。既然你不拥有它,你就不能很好地释放它。

于 2010-02-15T20:51:31.357 回答