所以我想将一些代码重构为现有的DataManager代码。代码库太大,我们希望将其拆分为具有数据访问对象模式的单独文件。所以我想做的是
BaseDAO
然后让各个DAO继承自该类。所以我有
BaseDAO : NSObject
SomeItemDAO : BaseDAO
在
中SomeItemDAO.m,我有
@implementation SomeItemDAO (DataManager)
但是我收到了警告,“类别正在实施一种方法,即使它的方法名称不同,它也会受到其主要类别的影响。如果您有类似
的内容,我会读到它@interface NSArray (MyCAtegory)
你不会得到那个编译器警告。
如果是这种情况,我该如何处理我的情况呢?我做不到
@interface BaseDAO (DataManager)
编译器说它无法找到接口BaseDAO。有什么想法吗?感谢。
编辑:
+ (SomeItemDAO *)sharedInstance {
static SomeItemDAO *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[SomeItemDAO alloc] init];
});
return instance;
}
- (void)someTestMethod {
NSLog(@"test method from condition");
}
答案 0 :(得分:1)
要么:实施您的
@interface SomeItemDAO (DataManager)
文件中的 SomeItemDAO.h
和
在那里写下以下内容,
@interface SomeItemDAO (DataManager)
+ (SomeItemDAO *)sharedInstance;
- (void)someTestMethod;
@end
并从SomeItemDAO
,
@interface SomeItemDAO : BaseDAO
//remove sharedInstance and someTestMethod from here
@end
或:将其从@implementation SomeItemDAO (DataManager)
@implementation SomeItemDAO (DataManager)
//remove sharedInstance and someTestMethod from here
@end
并在此处添加
@implementation SomeItemDAO
+ (SomeItemDAO *)sharedInstance {
static SomeItemDAO *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[SomeItemDAO alloc] init];
});
return instance;
}
- (void)someTestMethod {
NSLog(@"test method from condition");
}
@end
因为您的警告消息显示 “类别正在实施一种方法,该方法也将由其主要类实现” 您的类别SomeItemDAO (DataManager)
正在尝试实施已在其主类SomeItemDAO
中声明的方法。因此,您应该将其从主要类@interface
中删除,并将其添加到此类@intefrace.
如果您希望这些方法位于@implementation SomeItemDAO
,请将这些方法从@implementation SomeItemDAO (DataManager)
移开并保留在那里。