objective-c - 如何从实例方法返回 Swift 中的实例类型

标签 objective-c swift

考虑这样的方法:

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

它对方法链很有用,我在我的框架中编写了整个 api,并想将其移至 Swift,在此处搜索问题,但只找到一些复杂的答案而不是否,这在正常可读方式下是不可能的。

最佳答案

非常简短的回答是没有直接等价物。

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

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

详细的答案Return instancetype in Swift

关于objective-c - 如何从实例方法返回 Swift 中的实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439923/

相关文章:

Swift:正确使用可选的 if 语句

objective-c - cocos2d 在不同目标上按顺序运行序列

swift - NSTable中对象的列向数据

ios - 在 obj c 中以编程方式为 subview 添加约束(容器边距的前导和尾随空间)

iphone - 寻找obj-c/c的语音命令代码/库

ios - Swift 4.1 Decodable无法使用nestedContainer解码嵌套数组

swift - 从 Firestore 获取数据并正确附加到数组

swift - SKEmitterNode 在场景重启时导致崩溃

ios - 如何将 segue doing pop 设置为 root 并在 Storyboard 中推送一个新的?

objective-c - 如何在 NSButtons 中绘制类似 NSImage 的图像(有深度)?