如果我有以下对象:
@interface Simple : NSObject
@end
@interface Complex : Simple
@end
还有另一个对象,例如:
@interface Test : NSObject
+(void) doSomething:(void (^)(Simple*)) obj;
@end
如果我调用如下方法,一切正常:
[Test doSomething:^(Simple * obj) {
}];
当我尝试改为这样称呼它时:
[Test doSomething:^(Complex * obj) {
}];
编译器说:
Incompatible block pointer types sending 'void (^)(Complex *__strong)' to parameter of type 'void (^)(Simple *__strong)'
因为Complex
extends Simple
,我认为这会起作用,就像在 Java 中一样。
有没有办法以某种方式实现这一目标?