Objective-Cコンパイラは、メソッドパラメータが別のプロトコルで宣言される方法である場合、そのメソッドパラメータがプロトコルに準拠するように強制しませんか?メソッドパラメータのプロトコル適合はオプションですか?
@protocol FooProtocol<NSObject>
-(UIView <BarProtocol>*)barView;
@end
@protocol BarProtocol<NSObject>
-(BOOL)foobar;
@end
@interface FooController : NSObject<FooProtocol>
@end
@implementation FooController {
UIView *_view;
}
-(UIView *)barView {
return _view;
}
@end
そして、コンパイラはFooController
でbarView
がBarProtocol
に準拠UIView *
を返さないことに文句はありません:私は次のようになりますいくつかのコードを持っています。
強いタイピングが必要な場合は、Swiftに移動します。 Objective-Cは本質的にCです。コンパイラが何が起きているのかを理解するのに役立つ装飾がいくつか追加されていますが、コンパイラはキャストを使用するとそのメソッドからNSStringを返すようにします。 – Paulw11
_ "コンパイラは不平を言っていません" _これには警告があります。 –