首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSet *someSet = [NSSet alloc] init与NSSet *someSet = [NSSet set]

NSSet *someSet = [NSSet alloc] init与NSSet *someSet = [NSSet set]
EN

Stack Overflow用户
提问于 2011-11-30 16:55:07
回答 4查看 1.9K关注 0票数 1

可能重复:

What is the difference between these two ways of allocating memory in Objective-C?

我被这事绊倒了。我意识到我不明白什么时候必须使用alloc为堆上的对象创建空间。

通过NSSet的类引用,我找到了类方法"set“(http://goo.gl/ndHjK)。

它的描述是“创建并返回一个空集”,听起来就像我想要的一样。那么,这个"set“方法是否为我隐式地执行了alloc init?

还是我把两件完全不同的事情搞混了?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-30 16:57:42

[NSSet set]被称为方便构造函数。它返回一个自动释放的对象,这意味着您不必关心该对象的内存管理,当然,除非您显式地保留它。

如果显式地分配它,也必须释放它。

方便构造函数通常如下所示:

代码语言:javascript
复制
+ ( NSSet *)set
{
    return [ [ [ NSSet alloc ] init ] autorelease ];
}
票数 2
EN

Stack Overflow用户

发布于 2011-11-30 16:57:32

是。[NSSet set]等于[[NSSet alloc] init] autorelease]

票数 1
EN

Stack Overflow用户

发布于 2011-11-30 16:58:33

NSSet集通过alloc/init/autorelease创建一个集。这是一种在可可中普遍使用的命名惯例。如果您想要在当前方法的范围之外使用它,则应该在返回的集合上调用returned。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8329786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档