方法签名返回值"类型或子类类"

时间:2014-06-27 12:09:31

标签: ios iphone objective-c macos class

当你有这样的签名时:

- (UIView *)fooView;

您可以返回UIView *的任何子类(例如UIScrollView

当你有:

- (Class)anyClass;

你可以返回任何类(不是实例,类本身),但有没有办法只允许某个类或子类的类?例如,伪造的代码:

- ([UIView class])bazClass;

所以在这里它应该只能返回其任何子类的类UIView

2 个答案:

答案 0 :(得分:1)

根据其他用户的说明,您不能 如果您的目标是指导其他程序员从代码中的方法返回什么(覆盖或委托方法),您可以:

  • 写评论(当然......)
  • 创建一个类似这样的typedef

typedef Class ClassOfKindUIView;

-(ClassOfKindUIView)class
{
    return [super class];
}

这不会阻止任何事情,但它可以成为一种说话方法"一种escamotage,让程序员停下来思考"这是什么?" ,然后cmd点击并阅读文档: - )

答案 1 :(得分:0)

您正在寻找的是返回类型的一种类型绑定。

不幸的是,这在Objective-C中是不可能的,所以我担心你运气不好。