您的位置:首页 > 移动开发 > IOS开发

IOS9新特性之关键字该怎么学

2016-01-20 20:39 309 查看
👉iOS9[b]新特性之常见关键字[/b]

iOS9出了很多关键字,研究下苹果为什么要新推出关键字.
研究方法:在新版本的Xcode创建一个空的项目,在老版本的Xcode打开,发现很多错误
研究新的东西:两点(1.怎么去用(书写格式) 2.关键字有什么作用)

关键字作用:仅仅是提示,并不会报编译错误.

关键字开发好处:

1.提高代码规范,减少交流时间,把更多精力放在开发中.

2.迎合swift,swift强引用,必须指定这个属性是否为空.

iOS9:Xcode7

iOS8:Xcode6

iOS7:Xcode5
iOS6:Xcode4 2013 6月份 Xcode4.6

[b]注意:[/b]
1.关键字只能用来描述对象,不能描述基本数据类型(int等等)

2.默认系统如果没有使用关键字,默认(对象属性)就是nonnull

3.在NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END之间,系统对象默认就是nonnull

------------------------------------------------------------------

nullable作用:可能为空,表示属性可以传入空,在访问属性和调用方法都会提示
nonnull作用:不能为空
null_resettable作用:声明属性:get 方法不能为空, set 方法可以为空
注意:
null_resettable:处理为空的情况
_Null_unspecified作用:不确定

研究方法:⬇️以nullable为例
格式(模仿):

1.方式一:(策略)

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

2.方式二:_Nullable(*后面,变量名前面)

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

3.方式三:__nullable(*后面,变量名前面),xcode7beta(测试版本)
@property (nonatomic, strong) NSString * __nullable name;

👉iOS9[b]新特性之泛型[/b]

苹果为什么推出泛型:

泛型好处:

1.迎合swift

2.提高代码规范,一看便知是什么类型

泛型作用:

1.限制类型(主要是限制集合中是什么类型)

2.从集合中取出来,可以使用点语法,不使用泛型,不能使用点语法.

泛型格式:

声明泛型格式: 在声明类型的后面<类型>

定义泛型格式: 在使用类型后面<类型>

注意点:泛型仅仅报警告,并不是编译错误.

数组里不能传入nil,真的会报错(运行).

疑问:为什么集合可以使用泛型.

并不是任何系统类型,都可以使用泛型,一般是集合(NSSet,字典,数组)

字典使用泛型格式:NSDictionary<NSString *,id>

泛型开发中使用场景(需求):声明类的时候不确定,使用类型创建对象才确定,就可以使用泛型

比如有个人,在声明这个Person类,并不知道会哪些编程语言(iOS,Java),在创建这个人类的时候,才确定他会什么.

自定义泛型?在声明自定义类的时候,声明泛型,在使用自定义类的时候,定义泛型

声明泛型:<泛型名称>
定义泛型:<什么类型>
这个泛型就可以充当一个类型使用
__covariant: [b]协变: 子类转父类[/b]
[b]__contravariant 逆变: 父类转子类[/b]
用于类型转换

观察 -> 总结

__kindof用法:用于返回值,在类型前面声明

__kindof作用:相当于,描述当前类或者子类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: