相关疑难解决方法(0)

是什么增加了对象的保留计数?

这是我指的代码.

// 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称,这是基本规则: …

memory memory-management objective-c retain

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

memory ×1

memory-management ×1

objective-c ×1

retain ×1