iOS 新特性关键字
1.用来修饰属性,或者方法的参数,方法的返回值
/**
nullable:表示可以传空
*/
//@property (nonatomic, strong, nullable) NSString *name;
//@property (nonatomic, strong) NSString * __nullable name;
//@property (nonatomic, strong) NSString * _Nullable name;
/**
nonnull: non:非 null : 空
*/
//@property (nonatomic, strong, nonnull) NSString *icon;
//@property (nonatomic, strong) NSString * __nonnull icon;
//@property (nonatomic, strong) NSString * _Nonnull icon;
//方法中书写规范
/**
- (nullable NSString *)test:(NSString *_Nullable)test;
- (nonnull NSString *)test1:(NSString *_Nonnull)test1;
*/
/**
//在 NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END 之间定义的所有属性和方法默认都是 nonnull
NS_ASSUME_NONNULL_BEGIN
@property (nonatomic) NSString *name;//这样默认表示非空
NS_ASSUME_NONNULL_END
*/
/**
* null_resettable :get方法返回值不能为空 set方法可以为空
* 如果使用了这种方法必须重写 set 方法或者重写 get 方法处理传递值为空的情况
*/
@property (nonatomic, strong, null_resettable) NSString *name;
/**
* null_unspecified: 不确定为空
*/
@property (nonatomic, strong, null_unspecified) NSString *name;
好处:
1.迎合 swift
2.提高我们开发人员开发规范,减少程序按之间交流
//注意 iOS9新出关键字 nonnull, nullable 只能修饰对象,不能修饰基本数据类型
2.iOS9 泛型
/**
泛型:限制类型
泛型使用场景
1.在集合(数组, 字典, NSSet)中使用比较常见
2.当声明一个类,类里面的某些属性的类型不确定,这时候我们才使用泛型
泛型书写规范
@property (nonatomic, strong) NSMutableArray<NSString *> *data;
在类型的后面定义泛型 NSMutableArray<NSString *> *data;
泛型修饰:只能修饰方法的调用
泛型好处:
1.提高开发规范,减少程序之间交流
2.通过集合取出来对象,直接当做泛型对象使用,可以使用点语法
*/
- __kindof
/**
* __kindof:表示当前类或者它子类
* __kindof书写格式
* 放在类型前面修饰这个类型
+(__kindof person *)person;
__kindof : 在调用的时候很清楚的知道返回的类
*/
/**
* id 坏处: 1. 不能再编译的时候检查真是类型
* 2.返回值,没有提示
instancetype: 会自动识别当前对象的类,但是返回值还是没有提示
*/
iOS 新特性关键字的更多相关文章
- ios开发ios9新特性关键字学习:泛型,逆变,协变,__kindof
一:如何去学习?都去学习什么? 1:学习优秀项目的设计思想,多问几个为什么,为什么要这么设计,这么设计的好处是什么,还能不能在优化 ,如何应用到自己的项目中 2:学习优秀项目的代码风格,代码的封装设计 ...
- iOS新特性引导页
有一个注意点: 获取版本号 个叫做Version,一个叫做Build,这两个值都可以在Xcode 中选中target,点击"Summary"后看到. Version在plist文件 ...
- ios新特性
@import 在xcode 5 下,为了更易于开发,增加了modules和 auto-linking 这两个新特性: 在以前,如果你要使用MapKit这个框架,你要这样做 1) 使用语句 #imp ...
- 3DTouch - iOS新特性
概述 3DTouch是一种立体触控技术,被苹果称为新一代多点触控技术. 详细 代码下载:http://www.demodashi.com/demo/10708.html 6s和6s plus之后特有效 ...
- ios新特性(泛型)
协变 子类转父类 逆变父类给子类赋值
- 开发者所需要知道的 iOS 10 SDK 新特性
转自:https://onevcat.com/2016/06/ios-10-sdk/ 写的很好啊.哈哈哈 总览 距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数.在我 ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
- iOS - Swift Swift 语言新特性
1.Swift 2.0 带来哪些新变化 常规变化: 1.OS X 10.11.iOS 9 和 watchOS 2 SDK 采纳了一些 Objective-C 的特性用来提高 Swift 的编程体验, ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
随机推荐
- [转]python下很帅气的爬虫包 - Beautiful Soup 示例
原文地址http://blog.csdn.net/watsy/article/details/14161201 先发一下官方文档地址.http://www.crummy.com/software/Be ...
- 第三百天了 how can I 坚持
郭娜还是不搭理我,或许是真没有遇到合适的.? 该咋办,好焦虑. 其实态度应该放低点,就这样是找不到对象的. 有必要这么死耗嘛,人生总是这么纠结. 周六年后,周日来吃火锅,这一年又过去了. 睡觉.
- homework_08
一.C++变量的作用域和生命周期 上面的程序中第一个正整数a的作用域是整个程序,而第二个正整数a的作用域是大括号内,除了大括号它的生命周期就结束了.因此先输出的是2,而后输出的是1. 二.理解堆和栈, ...
- 【转】CocoaPods的安装以及遇到的坑
一.CocoaPods是什么? CocoaPods是一个用Ruby写的.负责管理iOS项目中第三方开源库的工具,CocoaPods能让我们集中的.统一管理第三方开源库,为我们节省设置和更新第三方开源库 ...
- Oracle 递归查询
现实中我们经常需要用到一些递归查询,下面我们来介绍下ORACLE中递归查询的使用. 首先我们先新建一个表来存储以上信息 create table FAMILY ( person_id INTEGER, ...
- HDU 5826 physics (积分推导)
physics 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5826 Description There are n balls on a smoo ...
- Java IO (2) - OutputStream
Java IO (2) - OutputStream 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理 ...
- [iOS微博项目 - 1.8] - 各种尺寸图片加载 & 控件不显示研究
A. 图片的加载: [UIImage imageNamed:@"home"]; 加载png图片 一.非retina屏幕 1.3.5 inch(320 x 480) * ...
- 【Java】C/C++与Java的简单比较
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827273.html C/C++: 编译(不同的系统编译出不同的机器码,所以同一 ...
- rqnoj-396-SY学语文-dp
纯动态规划. 注意初始化为-INF #include<stdio.h> #include<algorithm> #include<iostream> #includ ...