我是 Objective-C 的新手,我在内存管理方面遇到了很多麻烦,但我仍然了解一点。如果我有一个对象,例如 NSArray * myArray,我会这样做
myArray = [[NSArray alloc] initWithObjects:obj1,obj2,obj3,nil];
然后我正在做一些事情,我希望 myArray 包含新对象,然后我再次初始化它
[myArray initWithObjects:obj4,obj5,obj6, nil];
它似乎满足了我的需要,但从内存管理的角度来看它是否正确?它会增加保留计数吗?那我应该释放它两次吗?
最佳答案
不要那样做!
一般来说,如果你想重置一个已经存在的 Objective C 对象中的对象或东西,创建并使用某种 Setter 方法。
对于您的数组,再次不要这样做!您引用的“initWithObjects”方法可以方便地初始化一个不可变(不可更改的)数组,其中包含数组将在其整个生命周期内填充的项目。
对于您正在尝试做的事情,只需使用 NSMutableArray。下面列出了它的文档:
关于objective-c - 如果我多次调用 nsobject init 会发生什么?它会增加保留计数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036569/