【发布时间】:2016-07-28 18:45:38
【问题描述】:
在 Objective-C 中,我习惯于声明连接到 Interface Builder 的属性
@property (nonatomic, weak) IBOutlet UIView *myView;
现在我有一个使用新的 XCode 可空性属性的类。为了保持与 Swift 的兼容性,IBOutlet 应该具有什么可空性属性?根据苹果的“Using Swift with Cocoa and Objective-C”:
当你在 Swift 中声明一个出口时,你应该将出口的类型设为隐式展开的可选。这样,您可以在初始化后让情节提要在运行时连接插座。当你的类从故事板或 xib 文件初始化时,你可以假设插座已连接。
那么这是否意味着插座应该在 Objective-C 中声明为nonnull?
【问题讨论】:
-
没有可空性注释的属性将作为隐式展开的选项导入。将其设为
nonnull会将其作为非可选项导入。你的IBOutlets 无论如何都应该在你的 .m 文件中声明,所以你用什么注释它并不重要。
标签: ios objective-c xcode cocoa-touch nullable