سؤال

انظر إلى الطريقة التالية:

-(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 إذا لم يكن كذلك.
هل يمكن لأحد أن يشرح لي لماذا من الخطأ إطلاق هذه الأشياء؟

هل كانت مفيدة؟

المحلول

يجب ألا تصدره لأنك لم تفعل +alloc, -retain, ، أو -copy هو - هي. منشئي الراحة مثل +objectWith… إرجاع الكائنات التي صدرت التلقائي.

نصائح أخرى

السؤال الأفضل الذي يجب طرحه هو: لماذا ينبغي هل تطلقها؟ ماذا فعلت للمطالبة بالملكية على الكائن؟ الجواب في هذه الحالة هو "لا شيء". نظرًا لأنك لا تملكها ، لا يمكنك إطلاقها جيدًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top