美文网首页iOS Developer
iOS 9新特性之关键字

iOS 9新特性之关键字

作者: lancely | 来源:发表于2017-02-15 14:22 被阅读36次

iOS 9 出了一些新的关键字诸如:nullablenonnullnull_resettablenull_unspecified__kindof 等,可用于属性、方法返回值或参数中

  • 关键字作用:起提示作用,告诉开发者属性信息
  • 关键字目的:迎合 swift(swift 是强语言,必须要指定一个对象是否为空)
  • 关键字好处:提高代码规划,减少沟通成本

需要注意的是,这些关键字不能用于基本数据类型,且仅仅是提供警告作用,并不会报编译错误

nullable

作用:表示值可能为空
语法如下

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

nonnull

作用:表示值不能为空
语法如下

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

null_resettable

作用:get 方法不能返回 nil,set 方法可以传入为空(如 UIViewController 的 view 属性)
注意:null_resettable 必须要处理为空的情况,需要重写 get 方法
语法如下

@interface Model ()
// 只有1种语法
@property (nonatomic, copy, null_resettable) NSString  *name;
@end

@implementation Model
- (NSString *)name {
    if (_name == nil) {
        _name = @"";
    }
    return _name;
}
@end

null_unspecified

作用:不确定是否为空(不常用)
语法如下

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

__kindof

作用:表示当前类或者它的子类
用于属性中,表示属性 childControllers 可以存放 UIViewController 及 UIViewController 的子类对象,如 UIViewController、UITableViewController 等

@property(nonatomic, copy) NSArray<__kindof UIViewController *> *childControllers;

用于参数中,表示参数 view 可以存放 UIView 及 UIView 的子类对象,如 UIView、UIButton 等

- (void)addSubview:(__kindof UIView *)view {
    [self.view addSubview:view];
}

相关文章

  • iOS9新特性之关键字

    iOS9新特性之关键字 iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值 好处:1.迎合swift...

  • iOS9新特性

    01-iOS9新特性之关键字 iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值 好处:1.迎合sw...

  • iOS 9 新特性

    iOS 9 新特性关键字:nonnull,nullable,null_resettable nonnull:表示不...

  • iOS 9新特性、泛型、__kindof的使用

    iOS 9新特性关键字:nonnull、nullable、null_resettable 注意这几个关键字都是用来...

  • ios9新特性(关键字)

    嗯嗯,马上就要 发布iOS新的版本了。嗯,码农又该忙碌了 ios9新特性(关键字) 新出的关键字:修饰属性,方法的...

  • 你需要知道的iOS 9,iOS10,iOS11(完整收录)

    iOS9 特性 关键字参考 2015 Objective-C 新特性 1.关键字 : 这些是纯编译器的语法支持(l...

  • iOS9、iOS10新特性

    iOS10新特性、iOS9新特性

  • iOS 9新特性之关键字

    笔者前几天升级Xcode到 Version 10.0,在新建类的时候,莫名发现在新建类的头文件中多出了两个宏即NS...

  • iOS 9新特性之关键字

    iOS 9 出了一些新的关键字诸如:nullable ,nonnull,null_resettable,null_...

  • iOS9新特性

    iOS9新增的一些新特性 1.关键字 iOS9新出的关键字:用来修饰属性,或者方法的参数,方法的返回值好处1.迎合...

网友评论

    本文标题:iOS 9新特性之关键字

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