【问题标题】:Custom UIView: Xcode nullability warnings for overrides of initWithFrame and initWithCoder methods自定义 UIView:Xcode 可空性警告,用于覆盖 initWithFrame 和 initWithCoder 方法
【发布时间】:2017-09-30 07:37:03
【问题描述】:

我正在实现一个自定义 UIView 并希望覆盖 UIView 中的两个初始值设定项,因此我将它们在 UIView.h 中的声明完全复制到我的 CustomUIView.h

- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;

但是在构建过程中,Xcode 分别对这两行显示警告:

CustomUIView.h:13:4:指针缺少可空性类型说明符 (_Nonnull、_Nullable 或 _Null_unspecified)
CustomUIView.h:14:49:指针缺少可空性类型说明符(_Nonnull、_Nullable、 或_Null_unspecified)

如果声明来自 Cocoa 框架源以及如何正确修复它们,为什么我会收到这些警告?

【问题讨论】:

    标签: ios objective-c iphone xcode cocoa-touch


    【解决方案1】:

    我想我明白了。

    在整个 Cocoa .h 文件中,在开头和结尾分别有 NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END 宏用法,这使得方法声明中的所有指针都为 nonnull nonnullnullable)。

    将这些宏添加到我的CustomUIView.h 后,XCode 警告消失了:

    NS_ASSUME_NONNULL_BEGIN
    
    @interface CustomUIView : UILabel
    
    - (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
    
    @end
    
    NS_ASSUME_NONNULL_END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      相关资源
      最近更新 更多