当前位置:  开发笔记 > 前端 > 正文

我是否需要明确分配我的NSNumber?

如何解决《我是否需要明确分配我的NSNumber?》经验,为你挑选了2个好方法。

我正在定义一个数字,如下所示:

NSNumber *nn0 = [NSNumber numberWithInt:0];

它没有任何分配工作正常.我的理解是,如果我使用numberWithInt,则会自动调用alloc和init.

如果我尝试在函数结束时释放,我会遇到问题:

[nn0 release];

我收到运行时错误.

我的问题是:如果我使用numberWithInt初始化NSNumber,我是否必须对其进行任何内存管理?



1> Andy White..:

许多类型的"便利构造函数"产生一个自动"自动释放"的对象 - 即新对象将由当前的NSAutoreleasePool保留.您不需要手动释放这些对象 - 它们将在当前NSAutoreleasePool释放/耗尽时释放.

有关便捷构造函数的说明以及如何为这些构造函数管理内存,请参阅此页面.

http://www.macdevcenter.com/pub/a/mac/2001/07/27/cocoa.html?page=3



2> Jason Coco..:

只需遵循核心内存管理规则:如果您"拥有"变量,您必须最终放弃所有权.您通过以下方式获得所有权:创建对象(alloc/new/copy)或专门获取所有权(retain).在所有这些情况下,您需要发布它.

如果你需要坚持使用该物体,你需要拥有它.因此,如果您知道您只需要此方法的编号(比如将其传递给数组或其他),请使用方便方法,然后将其保留.如果由于某种原因(例如,实例变量)要保留数字,则可以安全地分配/初始化它.

如果您发布了您不拥有的内容,则会出现运行时错误.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有