【问题标题】:How to use generics while subclassing collection class?如何在继承集合类时使用泛型?
【发布时间】:2016-01-11 21:59:47
【问题描述】:

例如我有几个类:

@interface SomeModel : NSObject
@end

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

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

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

如何实现 ArraySubclass 来支持像 NSArray 这样的泛型?

【问题讨论】:

标签: ios objective-c generics


【解决方案1】:

这就是你如何使用泛型支持声明你的一个类:

.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    相关资源
    最近更新 更多