可能重复:
What is the difference between these two ways of allocating memory in Objective-C?
我被这事绊倒了。我意识到我不明白什么时候必须使用alloc为堆上的对象创建空间。
通过NSSet的类引用,我找到了类方法"set“(http://goo.gl/ndHjK)。
它的描述是“创建并返回一个空集”,听起来就像我想要的一样。那么,这个"set“方法是否为我隐式地执行了alloc init?
还是我把两件完全不同的事情搞混了?
发布于 2011-11-30 16:57:42
[NSSet set]被称为方便构造函数。它返回一个自动释放的对象,这意味着您不必关心该对象的内存管理,当然,除非您显式地保留它。
如果显式地分配它,也必须释放它。
方便构造函数通常如下所示:
+ ( NSSet *)set
{
return [ [ [ NSSet alloc ] init ] autorelease ];
}发布于 2011-11-30 16:57:32
是。[NSSet set]等于[[NSSet alloc] init] autorelease]。
发布于 2011-11-30 16:58:33
NSSet集通过alloc/init/autorelease创建一个集。这是一种在可可中普遍使用的命名惯例。如果您想要在当前方法的范围之外使用它,则应该在返回的集合上调用returned。
https://stackoverflow.com/questions/8329786
复制相似问题