这是我指的代码.
// Person.h
@interface Person : NSObject {
NSString *firstName;
NSString *lastName;
}
@end
// Person.m
@implementation Person
- (id)init {
if (![super init]) return nil;
firstName = @"John";
lastName = @"Doe";
}
@end
// MyClass.m
@implementation MyClass
.....
- (NSArray *)getPeople {
NSMutableArray *array = [[NSMutableArray alloc] init];
int i;
for (i = 0; i < 10; i++) {
Person *p = [[Person alloc] init];
[array addObject:p];
}
return array;
}
.....
@end
Run Code Online (Sandbox Code Playgroud)
现在,我知道此示例代码中没有内存管理.需要什么?
在getPeople循环中,我分配了一个Person(retainCount 1),然后将它添加到数组中.保留计数现在是2,对吗?如果它是两个,我应该在将它添加到数组后[p release],将retainCount恢复为1吗?
我是对的,调用者有责任释放该方法返回的数组吗?(这也可以释放Person的内存和它们的实例变量,假设它们的计数为1).
我已经阅读了Apple的内存管理文档,但我想我最不清楚的是,增加对象保留的数量是多少?不过,我想我已经掌握了释放谁的责任的想法.据Apple称,这是基本规则: …