iOS9新特性
来源:互联网 发布:安全生产监察大队 知乎 编辑:程序博客网 时间:2024/06/11 03:06
iOS9新出的关键性:用来修饰属性。或者方法的参数,方法的返回值
![](cid:997ab42722e3ecd14363c3a0c0d76fb7)
![](cid:4781ecb063df47f9afec54b731eb7ec2)
![](cid:9095d1289ff376b1e20b9fa7d37ea080)
之间,定义的所有对象属性和方法默认都是nonnull
不确定是用getter方法还是setter方法
//会自动识别当前对象的类
// SonPerson
+ (instancetype)person;
// __kindof Person *:表示可以是Person类或者它的子类
+ (__kindofPerson*)person;
//仅仅表示只能是Person类
nullable(可以传空)
好处:1.迎合swift 2.提高开发人员规范,减少程序员之间的交流
开发规范:在属性前定义一个宏
// nullable作用:表示可以为空
// nullable书写规范:
//方式一:
@property(nonatomic,strong,nullable)NSString*name;
//方式二:
@property(nonatomic,strong) NSString *_Nullablename;
//方式三:
//方式一:
@property(nonatomic,strong,nullable)NSString*name;
//方式二:
@property(nonatomic,strong) NSString *_Nullablename;
//方式三:
@property(nonatomic,strong) NSString *__nullablename;
// nonnull: non:非null:空
// 书写格式:
@property(nonatomic,strong,nonnull)NSString*icon;
@property(nonatomic,strong) NSString *_Nonnullicon;
@property(nonatomic,strong) NSString *_Nonnullicon;
@property(nonatomic,strong) NSString *__nonnull icon;
//方法中,关键字书写规范
- (nonnullNSString *)test:(nonnullNSString *)str;
- (NSString* _Nonnull)test1:(NSString* _Nonnull)str;
注意:iOS新出关键字non null,nullable只能修饰对象,不能修饰基本数据类型
@property(nonatomic,assign)intage;
null_resettable: get:不能返回为空, set可以为空 如UIViewController中的View (self.view = nil; 但取view的值时不能为空)
- (UIView*)view
{
if (_view == nil) {
[selfloadView];
[selfviewDidLoad];
}
return _view;
{
if (_view == nil) {
[selfloadView];
[selfviewDidLoad];
}
return _view;
}
//注意;如果使用null_resettable,必须重写get方法或者set方法,处理传递的值为空的情况
//书写方式:
//书写方式:
@property(nonatomic,strong,null_resettable) NSString *name;
_Null_unspecified:不确定是否为空
书写方式只有这种
方式一
@property (nonatomic,strong) NSString *_Null_unspecifiedname;
方式二
书写方式只有这种
方式一
@property (nonatomic,strong) NSString *_Null_unspecifiedname;
方式二
@property (nonatomic,strong) NSString *__null_unspecified name;
_Null_unspecified:不确定是否为空
泛型
//定义泛型:确定类型
@property(nonatomic,strong)NSMutableArray<NSString*> *array;
//泛型:限制类型
//开发中使用场景:
// *限制集合中的类型,注意:只能检测方法的调用,因为声明的泛型,只能放在方法中
// *当一个类在声明的时候,某个对象的属性不确定,只有创建对象的时候才确定,可以使用泛型
//泛型书写格式:放在类型后面,表示限制这个类型.
//好处:
//提高程序员开发规范,减少交流成本。
//从数组或者字典取值,都是id类型,不能调用点语法,但是使用泛型,就可以了。
//自定义泛型:模仿数组
//需求:假设有个Person,这个人会编程语言,但是在定义的时候不确定,只有在创建对象的时候才确定。
// language属性的类型就有讲究了
// id类型:表示可以传任何对象
// Launguage类型,在赋值的时候没有提示
//泛型,声明泛型,在创建对象的时候,确定泛型,在赋值就有提示了。
//泛型中协变,逆变,用于转换类型
//默认带有泛型的变量,互相赋值有报警告,使用协变,逆变,就能解决.
//开发中使用场景:
// *限制集合中的类型,注意:只能检测方法的调用,因为声明的泛型,只能放在方法中
// *当一个类在声明的时候,某个对象的属性不确定,只有创建对象的时候才确定,可以使用泛型
//泛型书写格式:放在类型后面,表示限制这个类型.
//好处:
//提高程序员开发规范,减少交流成本。
//从数组或者字典取值,都是id类型,不能调用点语法,但是使用泛型,就可以了。
//自定义泛型:模仿数组
//需求:假设有个Person,这个人会编程语言,但是在定义的时候不确定,只有在创建对象的时候才确定。
// language属性的类型就有讲究了
// id类型:表示可以传任何对象
// Launguage类型,在赋值的时候没有提示
//泛型,声明泛型,在创建对象的时候,确定泛型,在赋值就有提示了。
//泛型中协变,逆变,用于转换类型
//默认带有泛型的变量,互相赋值有报警告,使用协变,逆变,就能解决.
//协变(__covariant):用于泛型数据强转类型,可以向上强转,子类可以转成父类
//逆变(__contravariant):向下转型父类转子类
__kindof
__kindof:表示当前类或者它子类
__kindof书写格式:
放在类型前面,表示修饰这个类型(__kindof Person *)
__kindof :在调用的时候,很清楚的知道返回类型
- (nullable__kindofUITableViewCell *)cellForRowAtIndexPath:(NSIndexPath*)indexPath; // returns nil if cell is not visible or index path is out of range
// id坏处: 1.不能在编译的时候检查真实类型
// 2.返回值,没有提示
//会自动识别当前对象的类
// SonPerson
+ (instancetype)person;
// __kindof Person *:表示可以是Person类或者它的子类
+ (__kindofPerson*)person;
//仅仅表示只能是Person类
+ (Person*)person1;
0 0
- iOS9和iOS9新特性
- iOS9新特性
- iOS9 新特性
- ios9新特性
- ios9新特性
- iOS9新特性
- iOS9的新特性
- iOS9 新特性
- iOS9之新特性
- iOS9新特性
- iOS9新特性
- ios9的新特性
- iOS9 新特性
- IOS9新特性
- iOS9新特性
- ios9新特性UIStackView
- iOS9新特性Bitcode
- ios9新特性分析
- 原码, 反码和补码
- caffe_.mexa64': libcaffe.so: cannot open shared object file: No such file or directory
- 【学习笔记】Java SE环境安装和配置
- SQL查询——示列代码(二)
- PRO2-Day8 实训项目<基于stm32处理器的蓝牙小票打印机>
- iOS9新特性
- 让我们一起学习Makefile
- struts2的拦截器自定义,使用默认拦截器,组合拦截器堆 的案例
- 设计模式_Java多态,继承,封装
- All object files and libraries for bitcode must be generated from...
- Laravel 5的redis哨兵(sentinel)支持
- OpenCV3.1.0读写XML文件
- UVa 489 Hangman Judge
- 用C#实现一个简单的图书管理系统(课程设计)