今天一个很变态的问题卡住了:cannot find protocol declaration for "RefreshAudioListViewDelegate"1.在PlayerController.h自定义了 一个代理 RefreshAudioListViewDelegate
#import "PlayerListViewController.h"
@protocol RefreshAudioListViewDelegate <NSObject>
- (void) updateCurrentPlayedAudio:(NSUInteger) currentPlayedIndex;
@end
@interface PlayerController : NSObject
2.在PlayerListViewController.h中
#import "PlayerController.h"
@class PlayerController;
@interface PlayerListViewController : UIViewController< RefreshAudioListViewDelegate>
{
PlayerController *playerController;
}
编译器提示“cannot find protocol declaration for "RefreshAudioListViewDelegate”
分析原因:
在编译器编译顺序:
1.PlayerListViewController.h文件时,首先发现#import "PlayerController.h",编译器会跑到PlayerController.h中。
2.在PlayerController.h中首先发现#import "PlayerListViewController.h",编译器又会到PlayerListViewController中加载内容。
3.这时 当见到@interface PlayerListViewController : UIViewController< RefreshAudioListViewDelegate>这一句的时候,由于在PlayerController中定义代理的语句还没有加载,所以编译器会报错:
cannot find protocol declaration for "RefreshAudioListViewDelegate"
解决办法:
删除PlayerController.h中的#import "PlayerListViewController.h"