为什么其他属性需要可空性类型说明符
why do other properties need nullability type specifier
我正在使用
获取照片的创建日期
@property(nonatomic, readonly, nullable) AVMetadataItem *creationDate;
在我的 .h 文件中。然后我得到我的视频资产的 AVMetadataItem 的值。
这很好用,但是当我将它添加到我的 .h 文件时,我的所有其他属性都会收到一条警告,指出它们缺少可空性类型说明符,即使它们在我没有时不需要它此 属性 已列出。我如何做到这一点而不必在 .h 文件中为每个其他 属性 等添加可空性说明符?
一旦您添加了可空性注释,ObjC 就希望您已经审核了该文件。要将文件的区域默认标记为非空,请使用 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 宏。
来自 Nullability and Objective-C 博客 post:
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 桥接中的所有 !
类型。您应该审核代码以确保这是正确的。但是对于大多数情况下都是非空的常见情况,宏大大简化了采用。
我正在使用
获取照片的创建日期@property(nonatomic, readonly, nullable) AVMetadataItem *creationDate;
在我的 .h 文件中。然后我得到我的视频资产的 AVMetadataItem 的值。
这很好用,但是当我将它添加到我的 .h 文件时,我的所有其他属性都会收到一条警告,指出它们缺少可空性类型说明符,即使它们在我没有时不需要它此 属性 已列出。我如何做到这一点而不必在 .h 文件中为每个其他 属性 等添加可空性说明符?
一旦您添加了可空性注释,ObjC 就希望您已经审核了该文件。要将文件的区域默认标记为非空,请使用 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 宏。
来自 Nullability and Objective-C 博客 post:
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 桥接中的所有 !
类型。您应该审核代码以确保这是正确的。但是对于大多数情况下都是非空的常见情况,宏大大简化了采用。