0

我很难找到在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,我遇到了异常,这很明显。我想要的是一种为相同目的正确设计我的课程的方法。

4

1 回答 1

0

根据要求:您应该resultKey在 B 的界面中声明。:-)

于 2013-02-25T13:58:40.377 回答