在'Class'方法中使用'MutableClass'方法

时间:2013-11-29 12:34:54

标签: objective-c immutability mutable subclassing

大家好,

请考虑以下事项:

// Things.h
@interface Things : NSObject
@property (strong, nonatomic) NSSomething * listOfThings;
@end

// Things.m
@implementation Things
// Some methods
@end

// MutableThings.h
@interface MutableThings : Things
- (instancetype) thingsPassingTest;
@end

// MutableThings.m
@implementation MutableThings
- (instancetype)thingsPassingTest
{
    // Do some stuff in order to return a subset of Things
    return newThings;
}
@end

我希望能够为thingsPassingTest对象调用Things,而不是MutableThings

有没有办法调用子类方法?

或者我可能走向错误的方向?

2 个答案:

答案 0 :(得分:0)

在您的设计中,您的MutableThings继承自Thinks,因此在Things中实现的每个公共属性和方法都可以在MutableThings对象中使用。 您可以在MutableThings类中覆盖thingsPassingTest并返回nil,也许这就是您想要的。 但最好的方法是使用Things和MutableThings类的所有常用方法创建根类。并且只在不在MutableThings中而不在根类中的Things中实现thingsPassingTest。 这是你要求的吗?

答案 1 :(得分:0)

你不能在“Things”对象上调用“thingsPassingTest”,因为“Things”是“MutableThings”的超类。它违反了面向对象编程范例的规则。