如何从instance方法返回Swift中的instancetype



考虑这样的方法:

- (instancetype)sizeFit {
[self sizeToFit];
return self;
}

它对方法链接很有用,我的框架中有这样写的整个api,我想把它移到Swift,在这里搜索问题,但只找到了一些复杂的答案,而不是否定的,这在正常可读的方式中是不可能的。

简单的答案是否定的,没有直接的等价物。

更详细的答案是,语言在概念上是不同的。

  • 在Objective-C中,返回的任何东西都是一个对象,也称为id。对于特定类型,使用instancetype是对编译器和IDE的提示,以允许进一步检查和自动完成。这适用于子类和扩展
  • Swift是强类型的,没有基对象,我们也有类和结构。函数只能返回特定类型Self、泛型类型或associatedtype。最好的近似是将此功能移动到extensionprotocol中并使用Self。这将以同样的方式工作。在子类上下文中,这是不等价的

Swift 中返回实例类型的详细答案

谢谢,简而言之,这是swift中返回实例类型的等效方法:

extension UIView {
func someFunctionThatReturnInstanceTypeInAllSubclassesOfView() -> Self {
return self
}
}

不过在课堂上不起作用。

最新更新