繁体   English   中英

NSArray的目标C内存管理问题

[英]Objective C memory management question with NSArray

我正在使用这样的浮点数加载数组:

NSArray *arr= [NSArray arrayWithObjects:
                [NSNumber numberWithFloat:1.9],
                [NSNumber numberWithFloat:1.7],
                [NSNumber numberWithFloat:1.6],
                [NSNumber numberWithFloat:1.9],nil];

现在我知道这是正确的做法,但是我对零售数量感到困惑。

  1. 每个对象都是通过[NSNumber numberWithFloat:]方法创建的。 这给对象保留一个1个dosnt的计数吗? -否则将回收该对象

  2. arrayWithObjects:方法向每个对象发送保留消息。

这意味着每个对象的保留续数为2。取消分配数组时,释放每个对象的保留数为1。

我错过了什么?

NSNumber numberWithFloat:方法未返回保留的对象。

通常,除非您使用alloccopynew ,否则可以假定您得到的保留计数为零的对象。 这样,唯一的保留是在NSArray上添加了对象时。

关于此类事情的博客很好: http//interfacelab.com/objective-c-memory-management-for-lazy-people/

无需释放这些对象。
arrayWithObjects:numberWithFloat:创建您不拥有的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM