我很难找到在Objective-C中实现类似于抽象类的方法。
我实际上并不关心限制使用我的基类而不对其进行子类化,我想要的是:我想要具有类似方法的 A 类(父/基/抽象),- (void)makeRequest
并且我想在 B 类中对其进行子类化,C,D 等,并且具有- (id)getCachedResult
从类的 A 方法调用的方法。所以基本上我希望A类实现一些基本逻辑,我希望它的子类修改这个基本逻辑的一些细节和部分。
听起来很琐碎,但我无法确定在 Objective-C 中实现这种模式的方法。
更新:
这是我正在尝试做的事情:
@interface A : NSObject
- (void)makeRequest;
- (NSString *)resultKey;
@property (strong) NSMutableDictionary * result;
@end
@implementation A
- (void)makeRequest
{
self.result[self.resultKey] = @"Result";
}
- (NSString *)resultKey
{
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:[NSString stringWithFormat:@"%@ should be overrided in subclass", NSStringFromSelector(_cmd)]
userInfo:nil];
return nil;
}
@end
/////////////////////////////
@interface B : A
@end
@implementation B
- (NSString *)resultKey
{
return @"key";
}
@end
当我创建 B 类的实例并尝试调用它的方法时- (void)makeRequest
,我遇到了异常,这很明显。我想要的是一种为相同目的正确设计我的课程的方法。