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

objective-c – 初始化一个对象,然后将其存储到NSArray中.这会是

发布时间:2020-12-16 10:28:42 所属栏目:百科 来源:网络整理
导读:如果保留了一个inited对象,那么我拥有它,并将它存储在一个NSArray中,它保留了存储在其中的NSArray,我可以指望NSArray看到它已经保留并且不会增加计数,或者我需要运行数组并减少保留计数以确保没有内存泄漏? 解决方法 要确保放弃添加到NSArray中的对象的所有
如果保留了一个inited对象,那么我拥有它,并将它存储在一个NSArray中,它保留了存储在其中的NSArray,我可以指望NSArray看到它已经保留并且不会增加计数,或者我需要运行数组并减少保留计数以确保没有内存泄漏?

解决方法

要确保放弃添加到NSArray中的对象的所有权,请在将其添加到NSArray后立即将该-release消息发送到该对象.如果你不这样做,那么你确实会有内存泄漏.

这是发生的事情:

NSString *str = [[NSString alloc] initWithFormat:@"%@",@"Blah"]; //retain count is 1,you own this object
[array addObject:str]; //retain count gets bumped to 2
[str release]; //retain count is 1 - relinquishing ownership here.
//There is no leak because when the NSArray is
//deallocated,the object will be sent the release message.

但是如果你没有发送所拥有的插入对象-release消息,那么即使取消分配NSArray,该对象也只有一个保留计数为1,并且该对象获得的内存将永远不会被回收,从而导致泄漏.

(编辑:李大同)

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

    推荐文章
      热点阅读