具有 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;
}
我正在尝试创建一个函数,让我多次执行相同的操作。这次我决定采取阻拦措施。但是在编写了以下代码之后:
- (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;
}