Rob*_*ert 0 memory-management objective-c
我正在加载一个像这样的浮点数组:
NSArray *arr= [NSArray arrayWithObjects:
[NSNumber numberWithFloat:1.9],
[NSNumber numberWithFloat:1.7],
[NSNumber numberWithFloat:1.6],
[NSNumber numberWithFloat:1.9],nil];
Run Code Online (Sandbox Code Playgroud)
现在我知道这是正确的做法,但我对零售数量感到困惑.
每个Object都由该[NSNumber numberWithFloat:]
方法创建.这给对象保留计数为1 dosnt吗? - 否则该物体将被回收
该arrayWithObjects:
方法向每个对象发送保留消息.
这意味着每个对象的保留连续为2.当取消分配数组时,每个对象都被释放,保留计数为1.
我错过了什么?
NSNumber numberWithFloat:方法未返回保留的对象.
通常,除非您正在使用alloc
,copy
或者new
您可以假设您正在获得一个保留计数为零的对象.因此,唯一保留的是当NSArray添加了对象时.
有一个关于此类事情的好博客:http://interfacelab.com/objective-c-memory-management-for-lazy-people/