objective-c - 如果我多次调用 nsobject init 会发生什么?它会增加保留计数吗?

标签 objective-c memory init nsobject

我是 Objective-C 的新手,我在内存管理方面遇到了很多麻烦,但我仍然了解一点。如果我有一个对象,例如 NSArray * myArray,我会这样做

myArray = [[NSArray alloc] initWithObjects:obj1,obj2,obj3,nil];

然后我正在做一些事情,我希望 myArray 包含新对象,然后我再次初始化它

[myArray initWithObjects:obj4,obj5,obj6, nil];

它似乎满足了我的需要,但从内存管理的角度来看它是否正确?它会增加保留计数吗?那我应该释放它两次吗?

最佳答案

不要那样做!

一般来说,如果你想重置一个已经存在的 Objective C 对象中的对象或东西,创建并使用某种 Setter 方法。

对于您的数组,再次不要这样做!您引用的“initWithObjects”方法可以方便地初始化一个不可变(不可更改的)数组,其中包含数组将在其整个生命周期内填充的项目。

对于您正在尝试做的事情,只需使用 NSMutableArray。下面列出了它的文档:

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html

关于objective-c - 如果我多次调用 nsobject init 会发生什么?它会增加保留计数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036569/

相关文章:

c++ - "scoping into"C++ 中类的头文件是否创建了它的实例?

php - 如何在 PHP 数组后释放内存? unset and = null 似乎不起作用

c++ - 为什么内存位置被分配垃圾值?

package - 如何在我自己的程序中打包Tcl库?

objective-c - 将 nsstring 中的字符与不同的字符集进行比较

objective-c - Objective C 类别的实例变量

iphone - 申报属性(property)的最佳方式是什么?

ios - Xcode 5 自动布局 - 嵌入式表格

typescript 初始化 : error TS6053: File 'init.ts' not found

swift - 在 Swift 的子类中使用添加的自定义参数实现自定义初始化