ios9新特性

来源:互联网 发布:淘宝图片怎么拍 编辑:程序博客网 时间:2024/06/06 14:13

一、nil

1、不能为空

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

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

2、可以为空

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

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

3、set可以为空,get不能为空

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

需要重写set方法。例如:

-(void)setNums:(NSArray *)nums{

    if (nums ==nil)return;

    _nums = nums;

}

比如UIViewController的view属性,就是即使set为空,还是会懒加载一个view的值

4、范围内所有属性都为不能为空。不过可以给范围内部分属性设为__nullable,该属性就变为可以为空了

NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_END

二、泛型

声明数组、字典......里面只能装什么

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

@property (nonatomic,strong)NSMutableDictionary <NSString *,NSNumber *> *dic;

一方面可以控制传值,另方面取出来的值可以直接用点语法,像是_names.lastObject.count
自定义泛型举例:

@interface XXBag<Type> : NSObject

-(void)add:(Type)objecg;

-(Type)get:(int)index;

@end

使用时

    XXBag<XXBook *> *b1 = [[XXBagalloc]init];

    [b1 add:<#(XXBook *)#>]

    XXBag<XXCar *> *b2 = [[XXBag alloc]init];

比如系统中的NSMutableArray,@interface NSMutableArray<ObjectType> :NSArray<ObjectType>

协变性covariant 

正常情况下

    XXBag<NSString *> *b1 = [[XXBagalloc]init];

    XXBag<NSMutableString *> *b2 = [[XXBagalloc]init];    

    b1 = (XXBag<NSString *> *)b2;

需要强转
如果添加了covariant

@interface XXBag<__covariant Type> :NSObject

-(void)add:(Type)objecg;

-(Type)get:(int)index;

@end

那么

    b1 = (XXBag<NSString *> *)b2;

就可以直接b1 = b2;

结论:__covariant 小类型(泛型类的子类类型)->大类型(泛型类的 父类类型),可以不用添加强转

     __contravariant 与__covariant相反  大类型(泛型类的 父类类型) -> 小类型(泛型类的子类类型)

三、__kindof
表示:可能是
作用:父类类型,可以用子类类型来接收
使用:在返回值的类型前面加上__kindof,既可以告知使用者返回参数可能是什么类型,又可以避免需要强转

-(__kindofNSArray *__nonnull)test2:(NSArray *__nonnull)ary{

    return@[];

}

NSMutableArray *a =  [selftest2:@[]];

四、其他

storyBoard reference   控制器之间可以进行交互

UIStackView 类似安卓的控件自动顺序排列

Search API

3D touch

五、新技术的了解渠道

1、WWDC开发者大会视频

2、Xcode-help-Documentation and API Reference(即官方文档)-General-Guides-iOS x.x API Diffs

六、程序员的学习

1、iOS技术的学习

-官方文档

 -Sample Code(实例文档)

 -Guides(指南)

 -Reference(API参考)

-博客

-[CocoaChina](http://www.cocoachina.com/ios/list_69_1.html)

-[伯乐在线](http://ios.jobbole.com/)

-[objc中国](http://objccn.io/)

-[优秀博客汇总](https://github.com/tangqiaoboy/iOSBlogCN)

-微博

-[开发者头条](http://weibo.com/kaifazhetoutiao

-[CocoaChina](http://weibo.com/cocoachina

-[iOS程序犭袁](http://weibo.com/luohanchenyilong

-[唐巧_boy](http://weibo.com/tangqiaoboy

-[我就叫Sunny怎么了](http://weibo.com/u/1364395395

-[KITTEN-YANG](http://weibo.com/710312327

-[M了个J](http://weibo.com/exceptions)

-[小码哥教育](http://weibo.com/u/5596623481)

-微信公众号

- iOS开发(iosDevTips)

- iOS开发(iOSDevTip)

- iOS技术分享(iosinfo)

-猿圈(CodePush) 

- 其他

-多写技术博客(简书\个人博客站点)

-参加一些技术分享活动(北京\上海\广州\杭州)

-有自己的技术圈子

2、非iOS技术的学习

-`数据结构与算法(比如加密算法等等)`

- `HTML5`

- `JavaScript`

- Java(Android\JavaEE)

- C++

3、非技术的学习

-管理\心理学\幸福\创业\历史

-网易公开课

-各种国际名牌大学的课堂视频

-名人讲座(TED)

-名人讲座\名人访谈










0 0
原创粉丝点击