我正在处理来自其他开发人员的代码(他们不在身边),并尝试在他们离开的代码中修复一些警告。
我已设法修复除了一个之外的所有错误和警告,这就是......
Incompatible pointer types returning 'NSArray * _Nonnull' from a function with result type 'ARArrayList *'
Xcode使用此警告指向以下代码块...
-(instancetype) split:(NSUInteger)numberOfPartitions
{
id result = [NSMutableArray new];
if (numberOfPartitions>0){
NSUInteger i = 0;
id subcollection = [[self class] emptyMutable];
for (id object in self){
[subcollection addObject:object];
i++;
if (i%numberOfPartitions==0) {
[result addObject:subcollection];
subcollection = [[self class] emptyMutable];
} else if (i==[self count]){
[result addObject:subcollection];
}
}
}
return [NSArray arrayWithArray:result];
}
Xcode中的侧边栏显示了这个......
任何人都可以看到如何解决这个问题?这最后的警告变得烦人!
答案 0 :(得分:2)
警告非常明确:
您的课程为ARArrayList
,因此instancetype
为ARArrayList
而不是NSArray
。
要删除警告,请将返回值转换为ARArrayList
(ARArrayList *)[result copy];