Objective-C Base类中的子类类型属性的实现方法

时间:2017-08-11 08:25:43

标签: ios objective-c

我有一些我想要完成的代码。我有一个基类和一些属于我的子类的属性。需要实施Getter和setter。在我的子课上,我有一个属性并引用它,ExampleType &typeExampleType父亲是BaseType女孩无法实例化。我的属性中基类中的getter和setter取决于BaseType。所以如果我的基类中有这样的BaseType *type。我吸气的例子:

-(NSString *) property {
    return self.type->returnString;
}

这实际上取决于我的子属性类型ExampleType。我不想在我的子类中为属性复制/粘贴代码。有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我想我知道你想要完成什么。以下是类型类:

@interface BaseType : NSObject

@property (nonatomic, strong) NSString* returnString;

@end

@implementation BaseType
@end

@interface ExampleType : BaseType
@end

@implementation ExampleType

- (NSString *)returnString
{
    return @"returnString from ExampleType";
}

@end

以下是主要对象,包含类型类:

@interface Parent : NSObject

@property (nonatomic, strong) NSString* property;

@end

@implementation Parent

- (BaseType*)type
{
    NSAssert(NO, @"should be implemented in child class");
    return nil;
}

- (NSString *)property
{
    return self.type.returnString;
}

@end

@interface Child : Parent

@property (nonatomic, strong) ExampleType* type;

@end

@implementation Child

@end

所以现在你的子类中有一个属性ExampleType,而property实现只存在于父类中。