在下面的代碼中,如果我返回NSMutableArray而不是NSArray,它是方法的返回類型,我不會收到任何警告或編譯錯誤。
如果方法的返回類型是NSArray,將返回值類型從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];
}
如果您不使用ARC,您的代碼有可能泄漏 – tikhop