BaseDAO と ICategoryDAO の 2 つのプロトコルがあります。ICategoryDAO は BaseDao を採用しています。クラス categoryDao は ICategoryDao を採用しています。
以下のコードは、serviceRepo クラス (NSObject のサブクラス) の初期化メソッドです。ここで型チェックなどを行います。
- (id)init {
self = [super init];
if (self) {
self.dict = [NSMutableDictionary new];
[self.dict setValue:[CategoryDao description] forKey:[NSString stringWithFormat:@"%s",[@protocol(ICategoryDao) name]]];
}
return self;
}
問題は、Xcode が常にエラーReceiver type 'Protocol' をポップすることです。たとえば、メッセージはこの呼び出しの前方宣言です -> [@protocol(ICategoryDao) name]
。ARCを使用していますが、ARC 以外のプロジェクトでも問題なく動作します。インターネットで解決策が見つからなかったので、ついにここに来ました。この問題を解決するにはどうすればよいですか、ここで何か間違ったことをしていますか?
これはプロトコルとクラスの構造です。
BaseDao
#import <Foundation/Foundation.h>
@protocol BaseDao <NSObject>
ICategoryDAO
#import <Foundation/Foundation.h>
#import "BaseDao.h"
@protocol ICategoryDao <BaseDao>
カテゴリーDAO
#import <Foundation/Foundation.h>
#import "ICategoryDao.h"
@interface CategoryDao : NSObject <ICategoryDao>
ServiceRepo
#import <Foundation/Foundation.h>
@interface ServiceRepository : NSObject
ServiceRepo.m
#import "ServiceRepository.h"
#import "CategoryDao.h"
#import "BaseDao.h"
@implementation ServiceRepository