iOS 关键字

2019-07-18  本文已影响0人  CrazyItCoder

关键字可用于属性、方法参数和返回值参数中
关键字作用:提示作用,告诉开发者属性信息
关键字好处:提高代码规划,减少沟通成本。
关键字仅仅是提供警告并不会报编译错误

宏:NS_ASSUME_NONNULL_BEGIN、NS_ASSUME_NONNULL_END

NS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_END之间默认是nonnull

nonnull、_Nonnull、__nonnull

nonnull即字面意思:提示不能为空。

// 语法1
@property (nonnull, nonatomic, copy) NSString *name;

// 语法2
@property (nonatomic, copy) NSString * _Nonnull name;

// 语法3
@property (nonatomic, copy) NSString * __nonnull name;
// 参数和返回值都不能为空
// 语法1
- (nonnull NSString *)test:(nonnull NSString *)name;

// 语法2
- (NSString * _Nonnull)test:(NSString * _Nonnull)name;

nullable、_Nullable、__nullable

nullable:提示可以为空。用法同上。

// 语法1
@property (nullable, nonatomic, copy) NSString *name;

// 语法2
@property (nonatomic, copy) NSString * __nullable name;

// 语法3
@property (nonatomic, copy) NSString * _Nullable name;

null_resettable

null_resettable:必须处理为空的情况,getter不能返回nilsetter方法可以传入空。必须重写get方法或者setter方法,处理传递值为空的情况。

@property (null_resettable, nonatomic, copy) NSString *name;

null_unspecified、_Null_unspecified、__null_unspecified

null_unspecified:不确定是否为空。

// 语法1
@property (null_unspecified, nonatomic, copy) NSString *name;

// 语法2
@property (nonatomic, copy) NSString * _Null_unspecified name;

// 语法3
@property (nonatomic, copy) NSString * __null_unspecified name;

__kindof

__kindof:表示当前类或者子类。

// 语法1
@property (nonatomic, strong) NSMutableArray<__kindof NSString *> *names;

// 语法2
- (__kindof UITableViewCell *)cell;
上一篇下一篇

猜你喜欢

热点阅读