【问题标题】:Surprising IPhone leak令人惊讶的 iPhone 泄漏
【发布时间】:2010-05-21 21:36:51
【问题描述】:

所以我在我的应用程序上运行仪器,并得到一个我可以发誓我做对的泄漏。

+ (NSMutableArray *)decode:(NSDictionary *)encoded_faculty_array
{   
    NSArray *faculty_id_data = [encoded_faculty_array objectForKey:@"faculty_id"];
    NSArray *faculty_first_name = [encoded_faculty_array objectForKey:@"first_name"];
    NSArray *faculty_last_name = [encoded_faculty_array objectForKey:@"last_name"];

    NSMutableArray* faculty_array = [[NSMutableArray alloc] init];

    for(int a = 0; a < [faculty_id_data count]; a++)
    {
        Faculty *new_fac = [[Faculty alloc] initWithFacultyId:[Dearray clean:[faculty_id_data objectAtIndex:a] withDefault:@"0"]                                
                                            andFirstName:[Dearray clean:[faculty_first_name objectAtIndex:a] withDefault:@"Name not found"] 
                                            andLastName:[Dearray clean:[faculty_last_name objectAtIndex:a] withDefault:@" "]    
                                            andBio:nil 
                                            andDegrees:nil 
                                            andTitle:nil];
        [faculty_array addObject:new_fac];
        [new_fac release];
    }

    [faculty_array autorelease];
    return faculty_array;
}

它报告了关于 new_fac 的泄漏。不过,我在打电话后立即发布了它。知道是什么导致了这个问题吗?

谢谢。

编辑

这里是初始化Faculty实例new_fac的代码:

- (id) initWithFacultyId:(NSString *)new_id andFirstName:(NSString *)new_first_name andLastName:(NSString *)new_last_name andBio:(NSString *)new_bio andDegrees:(NSString *)new_degrees andTitle:(NSString *)new_title 
{ 
    if (self = [super init]) { 
        self.faculty_id = new_id; 
        self.first_name = new_first_name; 
        self.last_name = new_last_name; 
        self.bio = new_bio; 
        self.degrees = new_degrees; 
        self.title = new_title; 
    } 
    return self; 
} 

【问题讨论】:

  • 你检查的是设备还是模拟器?
  • 基本方案看起来不错。远射,但是 initWithFacultyId:... 内部是否发生了一些不愉快的事情?
  • - (id)initWithFacultyId:(NSString *)new_id andFirstName:(NSString *)new_first_name andLastName:(NSString *)new_last_name andBio:(NSString *)new_bio andDegrees:(NSString *)new_degrees andTitle:( NSString *)new_title { if(self = [super init]) { self.faculty_id = new_id; self.first_name = new_first_name; self.last_name = new_last_name; self.bio = new_bio; self.degrees = new_degrees; self.title = new_title; } 返回自我; } 那是用教职员工 ID 初始化的,我正在使用设备 eman。

标签: iphone memory-leaks


【解决方案1】:

您可以尝试检查 Faculty 的属性并确保这些 NSStrings(firstName、lastName 等)被正确释放。

如果这些字符串是“保留”的属性,它们应该在 Faculty dealloc 中释放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2011-04-29
    • 1970-01-01
    • 2022-06-11
    • 2021-08-20
    相关资源
    最近更新 更多