Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 导致NSInvalidArgumentException的数组中异构项的PerformSelect_Objective C - Fatal编程技术网

Objective c 导致NSInvalidArgumentException的数组中异构项的PerformSelect

Objective c 导致NSInvalidArgumentException的数组中异构项的PerformSelect,objective-c,Objective C,我的NSArray包含两种不同类型的类,它们都派生自NSObject,并且有一个同名的方法。如果我打电话: [myArrayList makeObjectsPerformSelector:@selector(dehydrate) withObject:myParamObjec]; 我收到“无法识别的选择器”异常: 未捕获异常 “NSInvalidArgumentException”,原因: '***-[BlankItem脱水]: 已将无法识别的选择器发送到实例 0x

我的NSArray包含两种不同类型的类,它们都派生自NSObject,并且有一个同名的方法。如果我打电话:

[myArrayList 
      makeObjectsPerformSelector:@selector(dehydrate) 
      withObject:myParamObjec];
我收到“无法识别的选择器”异常:

未捕获异常 “NSInvalidArgumentException”,原因: '***-[BlankItem脱水]: 已将无法识别的选择器发送到实例 0x10328e0'

如果我遍历“myArrayList”的每个元素,并手动调用BlankItem上的“hydrate”作为选择器,同样的事情也会发生,但如果我正确地强制转换,一切都会好起来

for (id item in myArray)
{
    if ([item isKindOfClass:[BlankItem class]])
    {
        BlankItem *blankItem = (BlankItem *)item;

        // this works
        [blankItem dehydrate:connectionFactory];

        // this produces the exception
        [item performSelector:@selector(dehydrate) withObject:myParamObjec];
    }
    else
    {
        [item performSelector:@selector(dehydrate) withObject:myParamObjec];
    }
}
类别声明:

@interface BlankItem : NSObject {   
}

- (void)hydrate:(MyParamClass *)paramClass;
@end


@interface RegularItem : NSObject { 
}

- (void)hydrate:(MyParamClass *)paramClass;
@end
BlankItem和RegulationItem这两个类是否需要从公共基类继承才能正确执行此操作


我看不出我正在做什么或没有做什么会产生这个错误。有什么建议吗?

您想要的选择器是
脱水:
-您去掉了冒号,这使它成为一个完全不同的、无冒号的选择器。就Objective-C而言,“脱水”和“脱水:”选择器与“杀死”和“技能”一样不同!谢谢你接电话。