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

objective-c – 初始化一个对象,然后将其存储到NSArray中.这会是泄密吗?,第1张

概述如果保留了一个inited对象,那么我拥有它,并将它存储在一个NSArray中,它保留了存储在其中的NSArray,我可以指望NSArray看到它已经保留并且不会增加计数,或者我需要运行数组并减少保留计数以确保没有内存泄漏? 要确保放弃添加到NSArray中的对象的所有权,请在将其添加到NSArray后立即将该-release消息发送到该对象.如果你不这样做,那么你确实会有内存泄漏. 这是发生的事 如果保留了一个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,并且该对象获得的内存将永远不会被回收,从而导致泄漏.

总结

以上是内存溢出为你收集整理的objective-c – 初始化一个对象,然后将其存储到NSArray中.这会是泄密吗?全部内容,希望文章能够帮你解决objective-c – 初始化一个对象,然后将其存储到NSArray中.这会是泄密吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1220458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存