文档章节

第01天实战技术(01):iOS9新特性之常见关键字

宇鸿165
 宇鸿165
发布于 2017/03/24 10:09
字数 762
阅读 1
收藏 0

#####一、怎么去研究新特性? 1.使用新的Xcode创建项目,用旧的Xcode去打开

 怎么去研究新特性? 1.使用新的Xcode创建项目,用旧的Xcode去打开
 规律
 Xcode8 2016    iOS10
 Xcode7 2015    iOS9
 Xcode6 2014    iOS8
 Xcode5 2013    iOS7
 Xcode4 2012    iOS6
 
 1.出了哪些新特性 iOS9 : 关键字 : 可以用于属性、方法返回值和参数中
 关键字作用 : 提示作用,告诉开发者属性信息
 关键字目的 : 迎合swift,swift是个强语言,swift必须要指定一个对象是否为空
 关键字好处 : 提高代码规范
 关键字仅仅是提供警告,并不会爆 编译出错
 null_unspecified : 不确定是否为空
 null_resettable
 nonnull        : 不能为空
 nullable       : 可能为空

#####二、iOS9关键字

  • 1.(nullable)
 nullable       1.怎么使用(语法) 2.什么时候使用(作用)
 nullable作用 :   (从英文意思) 可能为空
 nullable语法1 :   @property (nonatomic,strong,nullable) NSString *name;
 nullable语法2 :  * 关键字 变量名   @property (nonatomic,strong) NSString * _Nullable age;
 nullable语法3 :  XcodeBate版(测试版) @property (nonatomic,strong) NSString * __nullable height;
 XcodeBate版(快速熟悉开发) :主要是练习的,建议不要去创建项目,和上传App Store(最好使用完整的版本)
  • 2.(nonnull)
 OC是弱语言 就算赋值不能为空 然后你强制赋为nil 也就是仅仅是警告
 
 nonnull       1.怎么使用(语法) 2.什么时候使用(作用)
 nonnull作用 :   (从英文意思) 不能为空
 nonnull语法1 :   @property (nonatomic,strong,nonnull) NSString *name;
 nonnull语法2 :  * 关键字 变量名   @property (nonatomic,strong) NSString * _Nonnull age;
 nonnull语法3 :  XcodeBate版(测试版) @property (nonatomic,strong) NSString * __nonnull height;
  • 3.(null_resettable)
 // Synthesized setter 'setName:' for null_resettable property 'name' does not hangle nil
 // 没有处理为空的情况
 
 null_resettable       1.怎么使用(语法) 2.什么时候使用(作用)
 null_resettable    : 必须要处理为空的情况, 重写get方法
 null_resettable作用 :   (从英文意思) 可重置 但是不能明确所以需要验证 --最终的最作用是:【get方法不能返回nil,set方法可以传入为空】
 控制器的view可以为空,但是他必须要有值(控制器必须要有view)
 苹果是怎么处理的(懒加载)
 - (UIView *)view
 {
 // 控制器的view 无论如何都会有值的,如果没有值就会加载出来
 if (_view == nil) {
 [self loadView];
 [self viewDidLoad];
 }
 return _view;
 
 }
 null_resettable语法1 :   @property (nonatomic,strong,null_resettable) NSString *name; // 只有一种写法
 
 // 因为人家不一定调用set方法,而有可能直接调用get方法, 所以我们在处理getter方法是最好的
 - (NSString *)name
 {
 if (_name == nil) {
 _name = @"lyh";
 }
 return _name;
 }

code

#import "ViewController.h"

@interface ViewController ()

// nullable
@property (nonatomic,strong,null_resettable) NSString *name;
@property (nonatomic,strong) NSString * _Nonnull age;
@property (nonatomic,strong) NSString * __nonnull height;


@end

@implementation ViewController

// 在处理getter 方法是最好的
- (NSString *)name
{
    if (_name == nil) {
        _name = @"lyh";
    }
    return _name;
}



- (void)viewDidLoad {
    [super viewDidLoad];
    
    // self.name 不知道是setter 还是getter 所以 使用单独方法去访问
    [self name]; // get方法 为 _Nonnull 不能为空
    // self setName:<#(NSString * _Nullable)#> // set方法 _Nullable 可能为空
//    self.name = nil;
//    self.age = nil;
//    self.height = nil;
    
    
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}


@end

© 著作权归作者所有

宇鸿165
粉丝 1
博文 919
码字总数 368963
作品 0
广州
私信 提问
iOS-初识网络(一)

iOS中的网络请求可以从如下的类中体现: NSURL: NSURLRequest: NSURLConnection: NSURLResponse: NSURLSession: iOS9+ 1:网络的url决定着和谁通信: url格式 2:怎么通信:多个客户端用不同...

Nlinger
2017/12/06
0
0
会议纪要-07.06.2015

祁博: 01修改bug 02地宫、主题副本掉落预览 小贱: 01调整登录UI 02修改BUG 艳明: 01测试游戏 02聊天系统 雷鹏: 01加入胜利场景 02修改技能bug 晓秋: 01测试游戏数据 雨卉: 01表现细节优...

索亚之息
2015/07/06
2
0
会议纪要-06.29.2015

祁博: 01修改bug 小贱: 01修改bug 国雄: 01优化萌萌哒facebook登陆 02萌萌哒相关 艳明: 01调试程序问题 02聊天系统讨论 雷鹏: 01修改bug 02战斗动作协调 徐刚: 01修改任务系统及活跃度...

索亚之息
2015/06/29
0
0
iOS9后修改HTTP模式进行网络请求

升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错? 原因 iOS9引入了新特性 新特性要求App内访问的网络必须使用协议。 解决方案:在app的info.plist中设置使用http请求 在Inf...

奋斗的青春年华
2016/07/30
46
0
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春
2017/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部