一、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;
@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;
@interface XXBag
-(void)add:(Type)objecg;
-(Type)get:(int)index;
@end
使用时
XXBag<XXBook *> *b1 = [[XXBagalloc]init];
[b1 add:<#(XXBook *)#>]
XXBag
比如系统中的NSMutableArray,@interface NSMutableArray
协变性covariant
正常情况下
XXBag<NSString *> *b1 = [[XXBagalloc]init];
XXBag<NSMutableString *> *b2 = [[XXBagalloc]init];
b1 = (XXBag<NSString *> *)b2;
@interface XXBag<__covariant Type> :NSObject
-(void)add:(Type)objecg;
-(Type)get:(int)index;
@end
那么
b1 = (XXBag<NSString *> *)b2;
结论:__covariant 小类型(泛型类的子类类型)->大类型(泛型类的 父类类型),可以不用添加强转
__contravariant 与__covariant相反 大类型(泛型类的 父类类型) -> 小类型(泛型类的子类类型)
-(__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)
- 名人讲座\名人访谈