首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSet setByAddingObjectsFromSet保留计数

NSSet setByAddingObjectsFromSet保留计数
EN

Stack Overflow用户
提问于 2011-05-13 03:12:57
回答 1查看 588关注 0票数 0

我以为我已经开始掌握objective-c中内存管理的诀窍了,但是我对将集合相加得到的保留计数感到有点困惑。setByAddingObjectsFromSet的应用编程接口说:

代码语言:javascript
复制
Returns a new set formed by adding the objects in a given set to the receiving set.

- (NSSet *)setByAddingObjectsFromSet:(NSSet *)other

因此,我对此感到有点困惑:

代码语言:javascript
复制
NSSet* tom = [[NSMutableSet alloc] initWithCapacity:1];
NSSet* dick = [[NSMutableSet alloc] initWithCapacity:1];
NSSet* harry = [tom setByAddingObjectsFromSet:dick];

printf("tom   retainCount: %d \n", [tom retainCount]);
printf("dick  retainCount: %d \n", [dick retainCount]);
printf("harry retainCount: %d \n", [harry retainCount]);

这会产生:

代码语言:javascript
复制
tom   retainCount: 1 
dick  retainCount: 1 
harry retainCount: 2 

如果setByAddingObjectsFromSet返回一个新的集合,为什么retainCount是2?我必须释放它两次吗?!我误解了什么?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-13 03:21:14

你根本不需要发布它。实际上,你不能释放它。你不拥有它。这些保留物来自Cocoa,这是Cocoa的责任来照顾它-它们不是你关心的。(这是查看retainCount不可取的众多原因之一。)

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

https://stackoverflow.com/questions/5983193

复制
相关文章

相似问题

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