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. Ensemble learning(集成学习)

    集成学习:是目前机器学习的一大热门方向,所谓集成学习简单理解就是指采用多个分类器对数据集进行预测,从而提高整体分类器的泛化能力. 我们在前面介绍了.所谓的机器学习就是通过某种学习方法在假设空间中找到一 ...

  2. Crontab设置定时任务

    ​ Crontab文件格式 文件格式: minute hour day month weekday username command 格式解析 字段 描述 minute 分,值为0-59 hour 小 ...

  3. Spring EL Lists, Maps example

    In this article, we show you how to use Spring EL to get value from Map and List. Actually, the way ...

  4. hdu 1151 Air Raid(二分图最小路径覆盖)

    http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 1000MS   Memory Limit: 10000K To ...

  5. dll开发中遇到的问题

    刚碰到个问题,我的一个项目中引用了一个dll,这个dll又引用了另一个dll,我把这俩个都放在bin文件夹下,但是会报错,说第二个dll找不到.把它放到系统文件夹system32下就没事了. 但是遇到 ...

  6. sunlime text 3 快捷键总结

    Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名等. ...

  7. Hadoop之父Doug Cutting

    生活中,可能所有人都间接用过他的作品,他是Lucene.Nutch .Hadoop等项目的发起人.是他,把高深莫测的搜索技术形成产品,贡献给普罗大众:还是他,打造了目前在云计算和大数据领域里如日中天的 ...

  8. J2EE程序员应该要掌握的linux知识

    J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...

  9. HDU 2136 Largest prime factor 參考代码

    #include <iostream> #include <vector> #include <cmath> using namespace std; const ...

  10. 【转】python中的lambda函数

    http://www.cnblogs.com/coderzh/archive/2010/04/30/python-cookbook-lambda.html lambda函数也叫匿名函数,即,函数没有具 ...