加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在这种情况下,“释放”对iPhone意味着什么?

发布时间:2020-12-16 09:28:52 所属栏目:百科 来源:网络整理
导读:我想问一个关于iPhone应用程序的愚蠢问题.我是iPhone应用程序的绿色.我在Apple网站上阅读了以下代码. MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]]; [self setMyView
我想问一个关于iPhone应用程序的愚蠢问题.我是iPhone应用程序的绿色.我在Apple网站上阅读了以下代码.

MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
    [self setMyViewController:aViewController];
    [aViewController release];

我有一个问题,第3行的“释放”意味着什么?

它是否清楚地表达了记忆?或程序控制该对象?或其他含义.非常感谢你.

解决方法

当你分配一些东西时,你得到的对象的保留计数为1 – 这意味着该对象当前正由某人使用,因此不应该从内存中删除它.如果在对象上调用retain,它将增加保留计数,这意味着该对象被2件事使用.如果保留计数达到0,则意味着该对象不再被任何东西使用,并且可以从内存中删除它.您可以通过调用对象上的release来减少对象的保留计数.

在您的示例中,aViewController被分配,并且在第1行之后保留计数为1.

然后将其设置为第2行中的视图控制器.此方法用于获取对象的所有权,因此应保留它以供自己使用.

第3行,我们不希望与视图控制器有任何关系,所以我们释放了它.保留计数减少一个 – 现在由新的所有者决定是否在完成后释放它.

您可能会发现阅读this tutrial的内存管理部分很有帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读