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

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。

我错过了什么?

#1楼 票数:6 已采纳

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

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

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

#2楼 票数:2

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

  ask by Robert translate from so

未解决问题?本站智能推荐:

4回复

NSArray内存管理问题

这是我在后台线程中运行的代码: 我的问题是,似乎在释放arrLoadedData会释放arrFAQData的内容。 这对我来说确实有意义,但是我需要弄清楚如何在允许我释放局部变量arrLoadedData同时将这些数据保存到IVAR中? 谢谢你的帮助!
4回复

目标C-内存管理问题?

我知道,当我拥有被设置为保留或复制的对象的属性时,必须执行以下操作。 但是,如果我没有为myObject定义属性怎么办? 我可以进行以下操作而不会泄漏吗? 为每个班级中的每个变量定义一个属性是否更好? 为什么 ??
7回复

目标C中的细微内存管理问题

我最近(经过数小时的调试)最近在Objective C iPad应用程序中发现了段错误。 归根结底,我有一个对象TOP,它拥有MIDDLE,它拥有BOTTOM。 MIDDLE和BOTTOM保留计数为1。MIDDLE将BOTTOM传递给TOP中的方法,该方法最终释放MIDDLE,从而导致BOT
5回复

目标C-内存管理有问题吗?

我知道在将保留的属性设置为已分配的对象时,它会增加对象的保留计数,因此我需要释放它(第三行,代码的第一块) 但是,如果我没有属性,并且正在将分配的对象分配给即时变量,该怎么办? 我还需要释放它吗????? (第三行,第二个代码块) 标记为重复之前,请先阅读完整的详细信息
5回复

内存管理,目标c

假设有一个NSSTring类型的字符串 有一个叫做testArray的数组,它是字符串对象的数组 我们需要给吗 或不?
1回复

内存管理(目标-c)

我有一个AudioInfo类,其中包含一些NSString对象。 在main()我创建(分配)一些AudioInfo对象。 稍后在main()我想要第二个AudioInfo对象具有相同的NSString对象。 我使用第一个中的NSStrings来init第二个。 题:
4回复

目标C,内存管理

1)使用保留的原因是什么? 例如,在setter方法中: 2)autorelease方法:是删除旧对象还是准备新对象? 3)为什么在输入对象上调用了保留方法? 将 是错的? 又为什么呢?
1回复

内存管理-目标C

我在项目中使用Json框架。 我将Json回应解析如下, 所以,如果我像过去那样在responseString上调用release,那是正确的吗? 已编辑 我做了如下 我想我现在很安全。