我注意到,
configuration
的 UIButton
属性在 Swift 和 Objective-C 中的实现方式(?)不同。
在 UIButton header configuration
是 UIButtonConfiguration
类型,这是一个类。
@property (nonatomic, readwrite, copy, nullable) UIButtonConfiguration *configuration API_AVAILABLE(ios(15.0), tvos(15.0)) API_UNAVAILABLE(watchOS);
@interface UIButtonConfiguration : NSObject <NSCopying, NSSecureCoding>
而在 Swift 中,
configuration
是 UIButton.Configuration
类型,它是一个结构:
@MainActor public var configuration: UIButton.Configuration?
public struct Configuration : Hashable { ... }
为什么为 swift 生成的
UIKit
标头不只是一对一地“翻译”到 Swift?为什么在这种情况下 configuration
的类型必须不同?
Objective-C 不支持 Swift 嵌套类型
总的来说,自从引入 Swift 以来,UIKit 在某些方面已经“快速化”以提高易用性,Swift 团队将此称为“大重命名”。