Erzwingt der Objective-C-Compiler nicht, dass die Methodenparameter den Protokollen entsprechen müssen, wenn die Methode in einem anderen Protokoll deklariert wird? Ich habe einige Code, der wie folgt aussieht:Ist Protokollkonformität in Methodenparametern optional?
@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
Und der Compiler nicht wieder beschweren sich, dass barView
in FooController
kein UIView *
konform BarProtocol
.
Wenn Sie stark tippen möchten, wechseln Sie zu Swift. Objective-C ist im Wesentlichen immer noch C. Eine Dekoration wurde hinzugefügt, um dem Compiler zu helfen, zu verstehen, was passieren soll, aber der Compiler würde Ihnen erlauben, einen 'NSString' von dieser Methode zurückzugeben, wenn Sie einen Cast verwenden. – Paulw11
_ "Der Compiler beschwert sich nicht" _ Es gibt eine Warnung dafür. –