首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个alloc,retainCount == 2

一个alloc,retainCount == 2
EN

Stack Overflow用户
提问于 2011-03-28 17:12:41
回答 5查看 1.1K关注 0票数 3

我有一个下面的代码:

代码语言:javascript
复制
NSLog(@"%d", [chart retainCount]);

self.chart = [[BNPieChart alloc] initWithFrame:self.view.frame];
NSLog(@"%d", [chart retainCount]);

终端显示:

代码语言:javascript
复制
[Session started at 2011-03-28 11:09:46 +0200.]
2011-03-28 11:09:51.008 Finance[35111:207] 0

2011-03-28 11:09:51.010 Finance[35111:207] 2

据我所知,retainCount应该等于1,而不是2。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-28 17:18:03

将定义为保留或复制的属性绘制为图表,因此:

代码语言:javascript
复制
self.chart = [[BNPieChart alloc] initWithFrame:self.view.frame];

+1在分配位置保留([BNPieChart alloc])

+1赋值时保留(self.chart = )

票数 6
EN

Stack Overflow用户

发布于 2011-03-28 17:17:28

chart可能是一个保留属性,这就是为什么你有2个retainCount。这就是为什么你可以看到这样的声明:

代码语言:javascript
复制
BNPieChart *aChart = [[BNPieChart alloc] initWithFrame:self.view.frame];
self.chart = aChart;
[aChart release];
票数 3
EN

Stack Overflow用户

发布于 2011-03-28 17:17:13

由于语句中的self,其保留计数为2,因为图表的属性被声明为retain Remove self from语句

变化

代码语言:javascript
复制
 self.chart = [[BNPieChart alloc] initWithFrame:self.view.frame];

代码语言:javascript
复制
 chart = [[BNPieChart alloc] initWithFrame:self.view.frame];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5456848

复制
相关文章

相似问题

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