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