【发布时间】: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