【问题标题】:why do other properties need nullability type specifier为什么其他属性需要可空性类型说明符
【发布时间】:2021-03-13 16:26:53
【问题描述】:

我正在获取使用创建照片的日期

@property(nonatomic, readonly, nullable) AVMetadataItem *creationDate;

在我的 .h 文件中。然后我得到我的视频资产的 AVMetadataItem 的值。

这很好用,但是当我将它添加到我的 .h 文件时,我的所有其余属性都会收到一条警告,指出它们缺少可空性类型说明符,即使当我没有此属性时它们不需要它列出。如何在不向 .h 文件中的所有其他属性等添加可空性说明符的情况下执行此操作?

【问题讨论】:

    标签: objective-c xcode objective-c-nullability avmetadataitem


    【解决方案1】:

    添加可空性注释后,ObjC 预计您已审核该文件。要将文件的区域默认标记为非空,请使用 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 宏。

    来自Nullability and Objective-C 博文:

    NS_ASSUME_NONNULL_BEGIN
    @interface AAPLList : NSObject <NSCoding, NSCopying>
    // ...
    - (nullable AAPLListItem *)itemWithName:(NSString *)name;
    - (NSInteger)indexOfItem:(AAPLListItem *)item;
    
    @property (copy, nullable) NSString *name;
    @property (copy, readonly) NSArray *allItems;
    // ...
    @end
    NS_ASSUME_NONNULL_END
    
    // --------------
    
    self.list.name = nil;   // okay
    
    AAPLListItem *matchingItem = [self.list itemWithName:nil];  // warning!
    

    这会将 Swift 桥接中的所有 ! 类型替换为显式的非可选类型。您应该审核代码以确保这是正确的。但是对于大多数事情都是非空的常见情况,宏大大简化了采用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-06
      • 2011-04-16
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多