ios9新特性分析

1.属性nonnull \__nonnull 修饰时:该属性的setter getter都不能为nil

例如:

@property (nonatomic,strong,nonnull)NSArray *names;

@property (nonatomic,strong) NSArray *__nonnull names;

设置属性names值时,如果为nil会发生警告;

2. 属性  nullable \__nullable : setter getter 都可以为nil

默认情况下,不加nullable, setter getter 都是可以为nil

nullable更多的作用在于程序员之间的沟通交流(提醒同事某个属性可能是nil)

例如:

@property (nonatomic,strong,nullable) NSArray *names;

@property (nonatomic,strong)NSArray *__nullable names;


3.属性null_resettable修饰时 : setter可以为nil, getter不可以为nil

例如:

@property (null_resettable, nonatomic, strong) NSArray *names;


4.如果 

设置@interfaceViewController ()

@end  之间的所有属性默认都是nonnull,可以添加 NS_ASSUME_NONNULL_BEGIN 与NS_ASSUME_NONNULL_END描述。


例如:

NS_ASSUME_NONNULL_BEGIN

@interface ViewController ()

@end

NS_ASSUME_NONNULL_END


5.方法返回值中添加__kindof修饰,这样可以解决当返回值用子类接收时,不用强制转换处理。


例如:

// __kindof : 告诉编译器返回值可能是NSString,也可能是NSMutableString

+ (__kindof NSString *)dequeueXXX;


这样返回值可以用 NSString与NSMutableString接收,不用考虑强制转换问题。

    NSString *str = [self dequeueXXX];

    [str length];

    

    NSMutableString *str2 = [self dequeueXXX];

    [str2 length];















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值