我注意到,UIButton
的configuration
属性在Swift和Objective-C中实现(?)不同。在UIButton头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
头文件不只是"翻译"?和斯威夫特一对一?为什么在这种情况下configuration
的类型必须是不同的?
Objective-C不支持Swift嵌套类型
总的来说,自从引入Swift以来,UIKit在某些方面已经被"swiftyfied"以提高易用性,Swift团队称之为"大重命名"。