如果我必须用其他值重新初始化 NSArray,这样做是否正确?
NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, nil];
// ...
// some code
// ...
array = [[NSArray alloc] initWithObjects:obj3, obj4, nil];
谢谢
如果我必须用其他值重新初始化 NSArray,这样做是否正确?
NSArray *array = [[NSArray alloc] initWithObjects:obj1, obj2, nil];
// ...
// some code
// ...
array = [[NSArray alloc] initWithObjects:obj3, obj4, nil];
谢谢
是的,这是绝对正确的。新对象与以前的对象完全不同。对象指针现在指向一个新对象,而旧对象将被释放,因为您使用的是 ARC。
它与重新初始化并不完全相同,因为您丢弃了对象并获得了一个新对象,但是 NSArray 是不可变的,因此这是“重新初始化”它的唯一方法。
您的代码不会重新初始化NSArray
. 它只是为变量分配了一个新对象array
。没关系。
您可以使用相同的名称重新初始化 NSArray,您不会收到任何错误或警告,但最新的对象会被之前的对象替换。之前的对象会被覆盖。为此,您必须使用 ARC,否则会出现内存问题。
我认为这段代码可以帮助你。至少,我认为这可能是一个合适的解决方案,特别是如果您使用 ARC:
NSObject *obj1 = [NSNull null]; NSObject *obj2 = [NSNull null];
NSMutableArray *arrayObj = [NSMutableArray arrayWithObjects:obj1, obj2, nil];
[arrayObj removeAllObjects];
arrayObj = [NSMutableArray arrayWithObjects:obj1, obj2, nil];
我希望它可以帮助你:)