考虑这样的方法:
- (instancetype)sizeFit {
[self sizeToFit];
return self;
}
它对方法链很有用,我在我的框架中编写了整个 api,并想将其移至 Swift,在此处搜索问题,但只找到一些复杂的答案而不是否,这在正常可读方式下是不可能的。
最佳答案
非常简短的回答是没有直接等价物。
更详细的答案是语言在概念上是不同的。
- 在 Objective-C 中,返回的任何东西都是一个对象,又名
id
。使用instancetype
是对特定类型的编译器和 IDE 的提示,以允许进一步检查和自动完成。这适用于子类化和扩展。 - Swift 是强类型的,没有基础对象,我们也有类和结构。一个函数只能返回一个特定的类型,
Self
,一个泛型类型或者一个associatedtype
。最好的近似方法是将此功能移动到extension
或protocol
中并使用Self
。这将以相同的方式工作。在子分类上下文中没有与此等效的内容。
关于objective-c - 如何从实例方法返回 Swift 中的实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439923/