具有 Objective-C 运行时的未定义选择器 - 块

Undefined selector with Objective-C runtime - blocks

我正在尝试创建一个函数,让我多次执行相同的操作。这次我决定采取阻拦措施。但是在编写了以下代码之后:

- (BOOL)readyForProcessing {
    void (^notDeclaredError)(id) = ^(id missingObject) {
        NSString *missingObjectName = NSStringFromSelector(@selector(missingObject));
        NSString *errorDescription = [NSString stringWithFormat:@"You need to provide %@ property", missingObjectName];
        [self configureErrorWithLocalizedDescription:errorDescription];
    };

    if (!self.delegate) notDeclaredError(self.delegate);

    return (self.error == nil);
}

我在声明 missingObjectName.

的行中收到警告
 Undeclared selector 'missingObject'

我知道它可能会尝试从 missingObject 而不是 delegate 生成 NSString。如何以这种方式传递它,输出将是 delegate 并且代码将在块内?

你在这里:

- (BOOL)readyForProcessing {
    void (^notDeclaredError)(SEL) = ^(SEL missingObject) {
        NSString *missingObjectName = NSStringFromSelector(missingObject);
        NSString *errorDescription = [NSString stringWithFormat:@"You need to provide %@ property", missingObjectName];
        [self configureErrorWithLocalizedDescription:errorDescription];
    };

    if (!self.delegate) notDeclaredError(@selector(delegate));

    return self.error ? NO : YES;
}