美文网首页
iOS 关键字

iOS 关键字

作者: CrazyItCoder | 来源:发表于2019-07-18 15:51 被阅读0次

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

    宏: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;
    

    相关文章

      网友评论

          本文标题:iOS 关键字

          本文链接:https://www.haomeiwen.com/subject/kvvllctx.html