[英]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];
现在我知道这是正确的做法,但是我对零售数量感到困惑。
每个对象都是通过[NSNumber numberWithFloat:]
方法创建的。 这给对象保留一个1个dosnt的计数吗? -否则将回收该对象
arrayWithObjects:
方法向每个对象发送保留消息。
这意味着每个对象的保留续数为2。取消分配数组时,释放每个对象的保留数为1。
我错过了什么?
NSNumber numberWithFloat:方法未返回保留的对象。
通常,除非您使用alloc
, copy
或new
,否则可以假定您得到的保留计数为零的对象。 这样,唯一的保留是在NSArray上添加了对象时。
关于此类事情的博客很好: http : //interfacelab.com/objective-c-memory-management-for-lazy-people/
无需释放这些对象。
arrayWithObjects:
和numberWithFloat:
创建您不拥有的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.