ios 函数嵌套名称不同的内置函数

有时候我们在使用函数中,函数内部的很多步骤是重复书写的,同一个函数的某些环节的调用不同函数时,可以直接传(SEL)作为参数,但当某个函数的参数是block时,可以使用下面的定义

sel:待执行方法

arguments:函数对应参数

- (void)invocationSEL:(SEL)sel arguments:(NSArray*)arguments{


    NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:sel];

    NSInvocation*invocation  = [NSInvocationinvocationWithMethodSignature:signature];

    [invocationsetTarget:self];

    [invocationsetSelector:sel];

    for(inti =0; i< arguments.count; i++) {

        idargument = [argumentswim_objAtIndex:i];

        [invocationsetArgument:&argumentatIndex:1+i];

    }

    [invocationinvoke];

}


eg:

typedef void(^handlerBlock)(NSArray*__nullable array,NSError*__nullable error);

handlerBlock handler = ^(NSArray*__nullable array,NSError*__nullable error){

                    };

[self invocationSEL:sel arguments:@[array,handler]];

你可能感兴趣的:(ios 函数嵌套名称不同的内置函数)