如何将派生类方法委托给协议方法?
我对Objective C非常陌生。请原谅我,如果你发现我的问题很幼稚。我试图在网上搜索,但由于缺乏良好的上下文,搜索结果似乎不符合我的要求。如何将派生类方法委托给协议方法?
我有一个方法foo
在协议P
中声明。 interface
从P
派生的继承,并提供foo
的实现。我有另一个interface
AnotherDerived
从协议P
继承。我想将来自AnotherDerived
方法的调用委托给foo
,以便调用Derived方法。
@protocol P <NSObject>
@required
- (NSString *)foo;
@end
@interface Derived: NSObject <P>
- (NSString *)foo
{
return _foo;
}
@end
@interface AnotherDerived: NSObject <P>
- (NSString *)foo
{
return [super foo]; <----------------- I need something like this. It should call method of Derived
}
@end
有没有办法做到这一点?
只是因为两个类实现相同的协议,并不意味着这两个类之间有某种关系。 AnotherDerived
中的foo
方法不知道还有一些其他类Derived
也实现foo
。
你可以明确地在AnotherDerived
的foo
分配的Derived
一个实例,并使用:
@interface AnotherDerived: NSObject <P>
- (NSString *)foo
{
Derived *d = [Derived new];
return [d foo];
}
@end
或者你可能宣布foo
作为一个类的方法:
@protocol P <NSObject>
@required
+ (NSString *)foo;
@end
@interface Derived: NSObject <P>
+ (NSString *)foo
{
return _foo;
}
@end
但你仍然需要明确调用foo
Derived
@interface AnotherDerived: NSObject <P>
+ (NSString *)foo
{
return [Derived foo];
}
@end
最后,你可以让AnotherDerived
继承自Derived
,正如其他人指出的那样。
构图对我来说效果很好。谢谢! –
如果我理解正确的,你的Derived
工具P
,和你的AnotherDerived
应该调用Derived
实施foo
?你需要让AnotherDerived
继承Derived
:
@interface AnotherDerived: Derived
- (NSString *)foo
{
return [super foo];
}
没有必要让AnotherDerived
实施P
,因为Derived
已经做到这一点。
你能否让你的问题少一点抽象?我认为我和P以及foo很难遵循。你能否做出更具体的解释? – Fogmeister
我很抱歉不适。我正在添加更多细节。 –
致电[超级富]你的AnotherDerived应继承衍生 –