内存管理 - 我应该通过某些命令来释放和释放对象吗?

时间:2012-02-08 00:35:15

标签: objective-c ios memory-management

例如,我创建了一个数组并将一些自定义类放入其中。我应该按照一定的顺序取消并释放它们吗?如果我将后台ASIHTTPRequests放在一个数组中,如果我先释放数组会有泄漏吗? ARC中它是一样的吗?谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

当您将对象添加到NSArray时,它会自动保留,然后当您release数组时,release信号将被发送到该数组中的所有对象。所以:

-(void)someMethod{

   NSString *newString = [[NSString alloc] initWithString:@"Hello"]; //newString retainCount = 1
   NSArray *newArray = [[NSArray alloc] initWithObjects: newString]; //newString retainCount = 2 

   [newArray release];  //newString retainCount = 1
   [newString release];  //newString retainCount = 0

} 

与:

相同
-(void)someMethod{

   NSString *newString = [[NSString alloc] initWithString:@"Hello"]; //newString retainCount = 1
   NSArray *newArray = [[NSArray alloc] initWithObjects: newString]; //newString retainCount = 2 

   [newString release];  //newString retainCount = 1
   [newArray release];  //newString retainCount = 0

} 

事实上,当您想要创建一个对象数组而不需要对这些对象进行单独引用时,第二个代码是一种非常常见的做法。