不兼容的指针类型从结果类型为'ARArrayList *'的函数返回'NSArray * _Nonnull'

时间:2017-04-13 20:31:10

标签: objective-c

我正在处理来自其他开发人员的代码(他们不在身边),并尝试在他们离开的代码中修复一些警告。

我已设法修复除了一个之外的所有错误和警告,这就是......

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中的侧边栏显示了这个......

enter image description here

任何人都可以看到如何解决这个问题?这最后的警告变得烦人!

1 个答案:

答案 0 :(得分:2)

警告非常明确:

您的课程为ARArrayList,因此instancetypeARArrayList而不是NSArray

要删除警告,请将返回值转换为ARArrayList

(ARArrayList *)[result copy];