基于变量的动态方法返回类型?

时间:2014-11-29 04:55:17

标签: objective-c xcode clang

我有一个名为Collection的类,它实现了EKEnumerable,它包含一个数组/枚举器和多个子类,名为CarCollection,DriverCollection等。集合上有各种方法,它们当前返回id或实现提供类型为id的参数的块。我想让Car,Driver和其他子类能够输入返回值和块参数。

作为Collection中的一个例子:

- (id)find:(BOOL (^)(id))block
{
    id next;
    EKEnumerator *e = self.asEnumerator;
    while ((next = e.next)) {
        if (block(next)) {
            return next;
        }
    }
    return nil;
}

希望在CarCollection中动态输入,而不是必须实现子类中的每个方法:

- (Car *)find:(BOOL (^)(Car *))block
{
    id next;
    EKEnumerator *e = self.asEnumerator;
    while ((next = e.next)) {
        if (block(next)) {
            return next;
        }
    }
    return nil;
}

元编程是否可行,或者我需要在每个子类中重新实现每种方法都具有正确的类型。

0 个答案:

没有答案