微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么其他属性需要可空性类型说明符

如何解决为什么其他属性需要可空性类型说明符

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

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

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

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

解决方法

一旦您添加了可空性注释,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 桥接中的所有 ! 类型。您应该审核代码以确保这是正确的。但是对于大多数事物都是非空的常见情况,宏大大简化了采用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。