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
Ios 使用va_列表删除阵列中的几个控制器类_Ios_Objective C_Pointers - Fatal编程技术网

Ios 使用va_列表删除阵列中的几个控制器类

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

我想删除出现在我的navigationController.ViewController的va_列表中的任何UIViewController类

请简要查看我的代码:

- (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];
}