1.用来修饰属性,或者方法的参数,方法的返回值

/**

nullable:表示可以传空

*/

//@property (nonatomic, strong, nullable) NSString *name;

//@property (nonatomic, strong) NSString * __nullable name;

//@property (nonatomic, strong) NSString * _Nullable name;

/**

nonnull: non:非  null : 空

*/

//@property (nonatomic, strong, nonnull) NSString *icon;

//@property (nonatomic, strong) NSString * __nonnull icon;

//@property (nonatomic, strong) NSString * _Nonnull icon;

//方法中书写规范

/**

- (nullable NSString *)test:(NSString *_Nullable)test;

- (nonnull NSString *)test1:(NSString *_Nonnull)test1;

*/

/**

//在 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 之间定义的所有属性和方法默认都是 nonnull

NS_ASSUME_NONNULL_BEGIN

@property (nonatomic) NSString *name;//这样默认表示非空

NS_ASSUME_NONNULL_END

*/

/**

*  null_resettable :get方法返回值不能为空 set方法可以为空

*  如果使用了这种方法必须重写 set 方法或者重写 get 方法处理传递值为空的情况

*/

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

/**

*  null_unspecified: 不确定为空

*/

@property (nonatomic, strong, null_unspecified) NSString *name;

好处:

1.迎合 swift

2.提高我们开发人员开发规范,减少程序按之间交流

//注意 iOS9新出关键字 nonnull, nullable 只能修饰对象,不能修饰基本数据类型

2.iOS9 泛型

/**

泛型:限制类型

泛型使用场景

1.在集合(数组, 字典, NSSet)中使用比较常见

2.当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型

泛型书写规范

@property (nonatomic, strong) NSMutableArray<NSString *> *data;

在类型的后面定义泛型 NSMutableArray<NSString *> *data;

泛型修饰:只能修饰方法的调用

泛型好处:

1.提高开发规范,减少程序之间交流

2.通过集合取出来对象,直接当做泛型对象使用,可以使用点语法

*/

  1. __kindof

/**

* __kindof:表示当前类或者它子类

* __kindof书写格式

* 放在类型前面修饰这个类型

+(__kindof person *)person;

__kindof : 在调用的时候很清楚的知道返回的类

*/

/**

* id 坏处: 1. 不能再编译的时候检查真是类型

*          2.返回值,没有提示

instancetype: 会自动识别当前对象的类,但是返回值还是没有提示

*/

iOS 新特性关键字的更多相关文章

  1. ios开发ios9新特性关键字学习:泛型,逆变,协变,__kindof

    一:如何去学习?都去学习什么? 1:学习优秀项目的设计思想,多问几个为什么,为什么要这么设计,这么设计的好处是什么,还能不能在优化 ,如何应用到自己的项目中 2:学习优秀项目的代码风格,代码的封装设计 ...

  2. iOS新特性引导页

    有一个注意点: 获取版本号 个叫做Version,一个叫做Build,这两个值都可以在Xcode 中选中target,点击"Summary"后看到. Version在plist文件 ...

  3. ios新特性

    @import  在xcode 5 下,为了更易于开发,增加了modules和 auto-linking 这两个新特性: 在以前,如果你要使用MapKit这个框架,你要这样做 1) 使用语句 #imp ...

  4. 3DTouch - iOS新特性

    概述 3DTouch是一种立体触控技术,被苹果称为新一代多点触控技术. 详细 代码下载:http://www.demodashi.com/demo/10708.html 6s和6s plus之后特有效 ...

  5. ios新特性(泛型)

    协变 子类转父类   逆变父类给子类赋值

  6. 开发者所需要知道的 iOS 10 SDK 新特性

    转自:https://onevcat.com/2016/06/ios-10-sdk/ 写的很好啊.哈哈哈 总览 距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数.在我 ...

  7. iOS - OC 语言新特性

    前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...

  8. iOS - Swift Swift 语言新特性

    1.Swift 2.0 带来哪些新变化 常规变化: 1.OS X 10.11.iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, ...

  9. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

随机推荐

  1. google proto buffer安装和简单示例

    1.安装 下载google proto buff. 解压下载的包,并且阅读README.txt,根据里面的指引进行安装. $ ./configure $ make $ make check $ mak ...

  2. WinJS.Binding.List与kendo.data.ObservableArray

    avalon0.8一个最大目标是实现对数组的深层监控,可是面临的困难重重,至今还没有什么起色.于是看一下其他两个MVVM框架的做法(knockout, emberjs, angular都不能监听家庭数 ...

  3. Hibernate之Session对象的相关方法以及持久化对象的状态

    一.持久化对象的状态        站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状 ...

  4. Delphi实例-IdTCPServer和IdTCPClient的使用(支持文件发送)

    相关资料: http://blog.csdn.net/earbao/article/details/46514313 结果注意: 1.Use IdContext.IdGlobal 这两个单元2.不能使 ...

  5. HDU 5831 Rikka with Parenthesis II (栈+模拟)

    Rikka with Parenthesis II 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5831 Description As we kno ...

  6. HDU 4884 TIANKENG’s rice shop (模拟)

    TIANKENG's rice shop 题目链接: http://acm.hust.edu.cn/vjudge/contest/123316#problem/J Description TIANKE ...

  7. 最新CentOS6.x下redis安装

    1:软件环境: 系统版本:CentOS release 6.5 redis版本:redis-cli 3.0.5 安装目录:"/usr/local/redis" 下载软件:" ...

  8. Jeecms自定义标签用法[单个内容]

    1.com.jeecms.cms.action.directive包下建立自己的标签类

  9. Unity3D之飞机游戏追踪导弹制作

    最近开发完成一款打飞机的游戏,记录一下制作追踪导弹的方法,最开始在网上找到的资料制作出来的追踪导弹都不够真实,主要的问题是没有对导弹进行一个阀值处理,导弹每帧都始终会面向目标,而不是按照一定的角度进行 ...

  10. memcached构建集群分析之一

    memcached本身是不支持集群的,集群所关注的容灾.容错.宕机恢复机制统统都没有,实战中需要自己实现容灾机制. memcached集群相比memcached的优势: 巨量数据分布到集群的多台应用主 ...