如何在子类化集合类时使用泛型?

时间:2016-01-11 21:59:48

标签: ios objective-c generics

例如,我有几个班级:

@interface SomeModel : NSObject
@end

@interface SomeAnotherModel : NSObject
@property NSArray<SomeModel *> *modelsArray;
@end

如果我需要使用NSArray子类怎么办?

@interface SomeModel : NSObject
@property ArraySubclass<SomeModel *> *modelsArray;
@end

如何实现ArraySubclass以支持NSArray等泛型?

1 个答案:

答案 0 :(得分:0)

这是您使用泛型suppport声明其中一个类的方法:

.h文件:

@interface ArrayLikeClass<ObjectType>: NSObject

    - (void)add:(ObjectType)obj;
    - (ObjectType)objectAtIndex:(NSInteger)index;

@end

.m文件

@implementation ArrayLikeClass

    - (void)add:(id)obj {
        // ...
    }

    - (id)objectAtIndex:(NSInteger)index {
       // ...
    }

@end

您将类声明为通用类,但是在您的实现文件中,您将通用参数替换为id