Objective C属性保留计数

Ara*_*and 1 memory-management objective-c

如果我有一个属性,如

@property (nonatomic, retain) NSArray *myArray;
Run Code Online (Sandbox Code Playgroud)

然后我按如下方式设置它

[self setMyArray:[[NSArray alloc]init]];
Run Code Online (Sandbox Code Playgroud)

我的保留次数是2吗?

当我在我的dealloc方法中释放它时,仍然会有一个保留计数为1?

ima*_*boy 5

如果仅使用[[NSArray alloc] init]的返回设置属性,实际上有一个太多的引用.

您可以使用[self setMyArray:[NSArray array]]来避免这种情况,因为'array'方法返回一个自动释放的对象.

要么...

NSArray* newArray = [[NSArray alloc] init];
[self setMyArray:newArray];
[newArray release];
Run Code Online (Sandbox Code Playgroud)

...如果您不想使用自动释放的对象.