无法找到“SubViewControllerDelegate”
的协议定义
我的代码是这样的: subview.h
#import <UIKit/UIKit.h>
#import "SuperViewController.h"
@protocol SubViewControllerDelegate <NSObject>
- (void)someMethod:(NSData *)data;
@end
@interface SubViewController : UIViewController
@property (weak, nonatomic) id <SubViewControllerDelegate> delegate;
@end
subview.m:
[self.delegate someMethod:data];
SuperView.h
#import <UIKit/UIKit.h>
#import "SubViewController.h"
@interface SuperViewController : UIViewController <SubViewControllerDelegate>
@end
SuperView.m:
#pragma mark - SubView Controller Delegate Methods
- (void)someMethod:(NSData *)data{
NSLog(@"%@", data);
}
我做错了什么或错过了什么?
答案 0 :(得分:5)
你有一个“import-cycle”,因为“SuperViewController.h”导入“SubViewController.h”,反之亦然。
删除“SubViewController.h”中的#import "SuperViewController.h"
应该解决问题。
如果您确实需要在“SubViewController.h”中声明该类,请使用
@class SuperViewController;
以避免导入周期。
备注: <SubViewControllerDelegate>
协议声明可能不是
在 public 界面“SuperViewController.h”中根本需要。
在“SuperViewController.h”中,将类声明为
@interface SuperViewController : UIViewController
在“SuperViewController.m”中,使用协议定义类扩展:
@interface SuperViewController () <SubViewControllerDelegate>
@end