Objective c 目标C协议循环依赖?
我在它自己的头文件中有一个protocolA,用作接口。 然后我有两个具体的类,它们是该协议的不同实现 现在,在我的ViewController中,我使用它来声明id类型的属性,它允许我交换实现,而VC对此一无所知 我还有protocolB,用于从这两个实现对象到VC的委托调用 问题是我有循环依赖 在协议A中,我需要声明一个id类型的“委托”属性。 在协议B中,委托方法向调用者发送引用,调用者是id类型的对象 有更好的设计吗Objective c 目标C协议循环依赖?,objective-c,ios,interface,protocols,Objective C,Ios,Interface,Protocols,我在它自己的头文件中有一个protocolA,用作接口。 然后我有两个具体的类,它们是该协议的不同实现 现在,在我的ViewController中,我使用它来声明id类型的属性,它允许我交换实现,而VC对此一无所知 我还有protocolB,用于从这两个实现对象到VC的委托调用 问题是我有循环依赖 在协议A中,我需要声明一个id类型的“委托”属性。 在协议B中,委托方法向调用者发送引用,调用者是id类型的对象 有更好的设计吗 用例子更新,也许对其他人会有帮助 协议头: #import <
用例子更新,也许对其他人会有帮助 协议头:
#import <Foundation/Foundation.h>
/*!
Abstract interface for any Provider
*/
@protocol DataProviderDatasource <NSObject>
@required
@property (nonatomic) id <DataProviderDelegate> delegate;
-(void)update;
@end
#导入
/*!
任何提供者的抽象接口
*/
@协议数据提供者数据源
@必需的
@属性(非原子)id委托;
-(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;
#导入
#导入“DataProviderDatasource.h”
/*!
每个数据提供程序实现的协议,用于进行委托调用以通知其委托有关数据管理操作。
*/
@协议DataProviderDelegate
-(void)dataProviderWillUpdate:(id)dataProvider;
-(void)dataProviderdidUpdate:(id)dataProvider;
@结束与类类似,您可以转发声明协议:
@protocol MONProtocolB; // << forward declaration -- #import not required
@protocol MONProtocolA
- (void)setDensity:(NSValue<MONProtocolB>*)pValue;
^^^^^^^^^^^^ << compiler recognizes this as an
objc protocol
@end
@protocolb;//你可以发布一些代码来让上下文更清晰吗?对不起,但我有法律义务不发布任何代码。只要一些示例代码就好了。i、 e.调用类MyCustomViewController和协议MyCustomProtocol等。。。然后我们可以看到问题发生的地方。我添加了示例代码。。。但我并没有添加解决问题的前瞻性声明,以便人们看到问题所在;-)@EarlGrey我来晚了一点,但您想知道您发布的类DataProviderDatasource
中有一个问题,对吗?因为我认为类不知道DataProviderDelegate
。你能澄清你的意图吗?