Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 重新初始化NSArray_Ios_Objective C_Nsarray - Fatal编程技术网

Ios 重新初始化NSArray

Ios 重新初始化NSArray,ios,objective-c,nsarray,Ios,Objective C,Nsarray,如果我必须使用其他值重新初始化NSArray,这样做对吗 NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, nil]; // ... // some code // ... array = [[NSArray alloc] initWithObjects:obj3, obj4, nil]; 谢谢是的,这绝对正确。新对象与以前的对象完全不同。对象指针现在指向一个新对象,旧对象将被释放,因为您正在使用ARC 这与重新初始化不

如果我必须使用其他值重新初始化NSArray,这样做对吗

NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, nil];
// ...
// some code
// ...
array = [[NSArray alloc] initWithObjects:obj3, obj4, nil];

谢谢

是的,这绝对正确。新对象与以前的对象完全不同。对象指针现在指向一个新对象,旧对象将被释放,因为您正在使用ARC


这与重新初始化不完全相同,因为您丢弃了对象并获得了一个新的,但NSArray是不可变的,因此这是“重新初始化”它的唯一方法。

您的代码不会重新初始化
NSArray
。它只是将一个新对象分配给变量
数组
。没关系。

您可以使用相同的名称重新初始化NSArray,您不会得到任何错误或警告,但最新的对象将替换为以前的对象。以前的对象将覆盖。为此,您必须使用ARC,否则将出现内存问题

我认为这段代码可能会对你有所帮助。至少,我认为这可能是一个合适的解决方案,尤其是在使用ARC时:

NSObject*obj1=[NSNull]; NSObject*obj2=[NSNull]

NSMUTABLEARRY*arrayObj=[NSMUTABLEARRY arrayWithObjects:obj1,obj2,nil]

[arrayObj removeAllObjects]

arrayObj=[NSMutableArrayWithObjects:obj1、obj2、nil]


我希望它能帮助您:)

将NSMutableArray用于this@JustSid是的,我用的是Arc,你能解释一下你在什么情况下这样使用吗?@Alex没什么特别的,这只是一个疑问作为奖励,OP可以加入现代世界并使用
@[obj3,obj4]
你能解释一下你在什么情况下这样使用吗??