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,并且该对象获得的内存将永远不会被回收,从而导致泄漏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |