Ios 使用va_列表删除阵列中的几个控制器类
我想删除出现在我的navigationController.ViewController的va_列表中的任何UIViewController类 请简要查看我的代码:Ios 使用va_列表删除阵列中的几个控制器类,ios,objective-c,pointers,Ios,Objective C,Pointers,我想删除出现在我的navigationController.ViewController的va_列表中的任何UIViewController类 请简要查看我的代码: - (NSArray *)removeInControllerArray:(NSArray *)controllers unwantedClasses:(__unsafe_unretained Class *)unwantedClass, ... NS_REQUIRES_NIL_TERMIN
- (NSArray *)removeInControllerArray:(NSArray *)controllers
unwantedClasses:(__unsafe_unretained Class *)unwantedClass, ... NS_REQUIRES_NIL_TERMINATION
{
va_list controllerList;
va_start(controllerList, unwantedClass);
NSMutableArray *mutableControllers = [controllers mutableCopy];
__unsafe_unretained Class *tempClass = unwantedClass;
while (tempClass) {
for (UIViewController *tempController in mutableControllers) {
if ([tempController isKindOfClass:tempClass]) {
[mutableControllers removeObject:tempController];
continue;
}
}
tempClass = va_arg(controllerList, Class *);
}
va_end(controllerList);
return [mutableControllers copy];
}
首先,它显示了这行代码中的错误[tempController是类的一种:tempClass],它说:
错误:将间接指针隐式转换为Objective-C
ARC不允许指向“类”的指针
警告:不兼容的指针类型发送“\uu不安全\u未恢复的类”
*'到类型为'Class'的参数'
那么,我如何消除这个错误呢?我不熟悉指针的概念:
我是否正确使用了“不安全”和“未修复”?
谢谢。您需要直接使用该类,而不是指向该类的指针。下课后把所有的星号都去掉 这是:
- (NSArray *)removeInControllerArray:(NSArray *)controllers
unwantedClasses:(__unsafe_unretained Class)unwantedClass, ... NS_REQUIRES_NIL_TERMINATION
{
va_list controllerList;
va_start(controllerList, unwantedClass);
NSMutableArray *mutableControllers = [controllers mutableCopy];
__unsafe_unretained Class tempClass = unwantedClass;
while (tempClass) {
for (UIViewController *tempController in mutableControllers) {
if ([tempController isKindOfClass:tempClass]) {
[mutableControllers removeObject:tempController];
continue;
}
}
tempClass = va_arg(controllerList, Class);
}
va_end(controllerList);
return [mutableControllers copy];
}