假设我有一个带有字符串的数组。
NSArray *names = [NSArray arrayWithObjects: @"One", @"Two", @"Three", nil];
我想要的是启动一些自定义类的对象并将它们添加到可变数组中。我正在使用一个带有字符串参数的自定义初始化方法。
更具体地说,我想[SomeClass alloc] initWithName: aName]
将结果对象添加到NSMutableArray
.
我正在考虑使用 Objective-C 快速枚举。所以我得到的是:
NSMutableArray *objects = [NSMutableArray arrayWithCapacity: [names count];
for (NSString *name in names) {
[objects addObject: [[[SomeClass alloc] initWithName: name] autorelease]];
}
问题是我无法添加nil
到数组中,而且我不喜欢异常处理。但是,我的启动方法可能会返回nil
。所以我决定在添加(预防)之前先检查一下。我的新 for-in-loop 是:
SomeClass *someObject;
for (NSString *name in names) {
someObject = [[[SomeClass alloc] initWithName: name] autorelease];
if (someObject) {
[objects addObject: someObject];
}
}
现在,我不是立即将新对象传递给数组,而是先设置一个指针someObject
,然后将指针传递给数组。
这个例子向我提出了一个问题。当我someObject = [[[SomeClass alloc] initWithName: name] autorelease]
在循环中时,数组中的现有对象(使用相同的指针添加)是否也会改变?
换句话说:该addObject: (id)someObject
方法是为我传递的指针创建一个新的内部副本,还是我必须创建一个指针的副本——我不知道如何——然后自己传递这个副本?
非常感谢!:-)