我正在尝试创建一个访问我的 web api 的通用存储库(模式)。我无法理解协议在objective-c 中的工作方式(我来自c#,接口有点不同)。
我想要做的是让 ProtocolA 成为另一个 ProtocolB 中的参数,然后在 ProtocolA 上实现 ProtocolB 访问方法,因为传递给 ProtocolB 的对象必须实现 ProtocolA 本身。我是否正确地考虑了这一点?
这是我迄今为止所拥有的,但似乎无法让它发挥作用——也许我的逻辑是错误的:
//PGenericModel.h
@protocol PGenericModel <NSObject>
- (void)testMethod;
@end
//PGenericRepository.h
#import "PGenericModel.h"
@protocol PGenericRepository <NSObject>
@required
- (void)Get:(id<PGenericModel>*)entity;
@end
//GenericRepository.m
#import "GenericRepository.h"
@implementation GenericRepository
- (void)Get:(id<PGenericModel>*)entity
{
//GET
[entity testMethod] <-- this doesn't work...
}
@end