在objective-c中,您可以看到
[object retain] ;
向对象发送retain
消息意味着什么,为什么要使用它?
答案 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上的帖子。