我在自己的头文件中有一个协议A,用作接口。然后我有两个具体的类,它们是该协议的不同实现。
现在,在我的 ViewController 中,我使用它来声明 id 类型的属性,它允许我在 VC 对此一无所知的情况下交换实现。
我还有protocolB,用于将这两个实现对象的委托调用委托给VC。
问题是我有循环依赖。
在协议 A 中,我需要声明一个 id 类型的“委托”属性。在协议 B 中,委托方法正在向调用者发送引用,调用者是 id 类型的对象...
有更好的设计吗?
更新示例,也许对其他人有帮助。
协议头:
#import <Foundation/Foundation.h>
/*!
Abstract interface for any Provider
*/
@protocol DataProviderDatasource <NSObject>
@required
@property (nonatomic) id <DataProviderDelegate> delegate;
-(void)update;
@end
协议B头
#import <Foundation/Foundation.h>
#import "DataProviderDatasource.h"
/*!
Protocol that each Data Provider implements to make delegate calls to notify its delegate about data management operations.
*/
@protocol DataProviderDelegate <NSObject>
-(void)dataProviderWillUpdate:(id<DataProviderDatasource>)dataProvider;
-(void)dataProviderdidUpdate:(id<DataProviderDatasource>)dataProvider;
@结尾