次のオブジェクトがある場合:
@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のようにこれが機能すると思いました。
どういうわけかこれを達成する方法はありますか?