【问题标题】:Method signature return value "Class of type or subclass class"方法签名返回值“类型类或子类类”
【发布时间】:2014-08-18 13:05:24
【问题描述】:

当你有这样的签名时:

- (UIView *)fooView;

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

当你有:

- (Class)anyClass;

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

- ([UIView class])bazClass;

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

【问题讨论】:

  • 我就是这么想的。但我暗暗希望我错了。
  • Swift 比 Obj-C 拥有的一个特性...

标签: ios iphone objective-c macos class


【解决方案1】:

按照其他用户的规定,您不能。
如果您的目标是指导其他程序员从代码中的方法(重写或委托方法)返回什么,您可以:

  • 写在评论里(当然……)
  • 像这样创建一个 typedef

.

typedef Class ClassOfKindUIView;

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

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

【讨论】:

    【解决方案2】:

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

    不幸的是,这在 Objective-C 中是不可能的,所以恐怕你不走运。

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 2010-12-19
      相关资源
      最近更新 更多