如果我实例化NSArray并将其传递给NSMutableArray,它是否会成为NSArray,或者它只是一个。
即。是最终发布的可变数组
- (NSArray *)getObjectivesWithPerspective:(Perspective *)perspective
{
NSMutableArray *result = [NSMutableArray array];
for (ObjectiveManagedObject *objective in self.objectives)
{
if (objective.perspective.objectID == perspective.objectID) {
[result addObject:objective];
}
}
return [NSArray arrayWithArray:result];
}
答案 0 :(得分:1)
请参阅此答案:https://stackoverflow.com/a/1392051/254422
基本上,它将对象复制到一个新的,自动释放的,不可变的NSArray中。
使用+数组创建的NSMutableArray是自动释放的。
答案 1 :(得分:0)
您可以在此处找到有关此内容的一些信息:what does -arrayWithArray actually DO?。但是你得到的数组应该是不可变的。 NSArray会将引用复制到不可变数组中。
如果有疑问,请进行测试。从方法中获取一个数组,将其转换为NSMutableArray并尝试添加一个对象。执行此操作时,您应该收到错误。
答案 2 :(得分:0)
由于NSMutableArray
是NSArray
的子类,您可以直接返回result
,而无需创建新的NSArray
对象:
- (NSArray *)getObjectivesWithPerspective:(Perspective *)perspective
{
NSMutableArray *result = [NSMutableArray array];
for (ObjectiveManagedObject *objective in self.objectives)
{
if (objective.perspective.objectID == perspective.objectID) {
[result addObject:objective];
}
}
return result;
}