gpt4 book ai didi

iphone - 如果方法的返回类型是 NSArray,那么将返回值类型从 NSMutableArray 转换为 NSArray 是一个好习惯吗?

转载 作者:行者123 更新时间:2023-12-03 20:27:51 25 4
gpt4 key购买 nike

在下面的代码中,如果我返回 NSMutableArray 而不是方法的返回类型 NSArray,则不会收到任何警告或编译错误。

但是使用 -copy 方法(如下面的代码)将返回值转换为 NSArray 是一个好习惯吗?
或者我应该返回 NSMutableArray?

+(NSArray *)returnImutableArray {
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObject:@"a"];
[arr addObject:@"b"];

//return arr; // no warning
return [arr copy];
}

最佳答案

我认为这本质上是个人喜好。在返回数组之前复制数组会导致(可能很小)性能损失。好处是您将完全防止结果进一步发生突变。不过,我通常不会自找麻烦。因为该方法声明的返回类型是一个不可变 NSArray,所以如果您尝试对其调用 NSMutableArray 的突变方法之一,编译器会警告您,除非您竭尽全力阻止这种情况(通过强制转换到 NSMutableArray)。

所以,简而言之,这是个人喜好,我个人通常不会为不可变副本而烦恼。

关于iphone - 如果方法的返回类型是 NSArray,那么将返回值类型从 NSMutableArray 转换为 NSArray 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com