要返回 NSArray 或 NSDictionary,我看到大多数人使用以下实现,这也是一些书籍所建议的。(iOS 开发实用方法 - )
选项1
-(NSArray*)listOfStudents{
NSMutableArray *temp = [[NSMUtableArray alloc] init];
//Add elements to the array
//
//
//
NSArray *students = [NSArray arrayWithArray:temp];
return students;
}
-(void)viewWillAppear{
self.studentsList = [self listOfStudents];
}
但是同样可以通过以下方式完成吗?
选项 2
-(NSArray*)newListOfStudents{
NSMutableArray *temp = [[NSMUtableArray alloc] init];
NSArray *students = [[NSArray alloc]initWithArray:temp];
[temp release];
//Add elements to the array
//
//
//
return students;
}
-(void)viewWillAppear{
NSArray *array = [self newListOfStudents];
self.studentsList = array;
[array release];
}
假设这些方法在主线程本身中被调用。
内存使用方面,我认为第二个选项很好,因为它不会创建自动释放对象,因为它们仅在自动释放池耗尽时才被释放。
我假设只有当应用程序退出时,主自动释放池才会被耗尽。因此,如果 OPTION 1 中的方法被多次使用(因为它们在 ViewWillAppear 中被调用),我认为只有在应用退出时才会释放自动释放池中的许多列表。
那么选项 2 方法是更好的方法吗?
更新:
为了更清晰,我更新了 viewWillAppear 实现。