保留消息是什么意思?

时间:2009-11-09 21:25:54

标签: objective-c

在objective-c中,您可以看到

[object retain] ;

向对象发送retain消息意味着什么,为什么要使用它?

3 个答案:

答案 0 :(得分:11)

基本上它用于对对象进行“所有权”,即通过调用retain,调用者负责处理该对象的内存管理。

我最常见的两个常见用法是:

1-您使用自动内存管理方法启动一个对象,但希望它在一段时间内挂起:someObject = [[someArray objectAtIndex:someIndex] retain],不保留该对象将在您无法控制的某个时间自动释放。

2-你通过传递somePointer来启动一个对象,你在somePointer上进行内存管理和调用释放,现在somePointer会一直挂起,直到新发起的对象释放它,对象调用保留在somePointer上,现在拥有它

-(id) initWithSomePointer:(NSObject *)somePointer_{

if(self = [super init])

somePointer = [somePointer_ retain];

return self;

}

..

..

[somePointer release];

答案 1 :(得分:6)

它会提升相关对象的引用计数。

有关Objective C中引用计数的更多详细信息,请参阅this post

答案 2 :(得分:3)

阅读Apple's memory management guide,了解有关Cocoa内存管理的所有内容的完整而简单的解释。我强烈建议您阅读该内容,而不是依赖Stack Overflow上的帖子。