Objective-C(14)Xcode7新特性

  • nullability

nullability特性用来指明指针是否可以为nil,通过这种特性能够更清晰的表达API的意图。

同时编译器在编译时会对代码进行nullability检查,提示必要的警告。

使用时需要添加到NS_ASSUME_NONNULL_BEGIN … NS_ASSUME_NONNULL_END之间

对象指针:nullable    nonnull

C指针: __nonnull    __nullable     __null_unspecified

null_resettable 用于属性中,表示该属性的setter方法可以设置为nil,getter方法不会返回nil

  • 轻量级泛型

轻量是因为这是个纯编译器的语法支持(llvm 7.0),和 Nullability 一样,没有借助任何 objc runtime 的升级,也就是说,这个新语法在 Xcode 7 上可以使用且完全向下兼容(更低的 iOS 版本)

主要用在NSArray和NSDictionary容器中

只存放字符串对象的数组对象:

只存数值对象的字典对象:

自定义支持泛型的容器:

@interface Stack <StackType> :NSObject
- (void) pushObject:(StackType) obj;
- (StackType) popObject;
@end
  • __kindof

如:

__kindof AMPerson * p;

用于表示该指针存储的是AMPerson对象或AMPerson子类的对象

解决了之前使用id类型,可读性不好的问题,并增加了合法性验证

时间: 2025-01-18 12:28:14

Objective-C(14)Xcode7新特性的相关文章

Prometheus 2.14.0 新特性

Prometheus 2.14.0 新特性 Prometheus 2.14.0 现在(2019.11.11)已经发布,在上个月的 2.13.0 之后又进行了一些修正和改进. 这次最大的新功能是基于 React 的新 UI,与现有 UI 大体相同.该 UI 还在持续开发中.现有的 UI 还获得了 head cardinality 统计信息.这次的更新新增了按状态进行的警报过滤. 修复了压缩后的远程写延迟,在无法发送样本时避免重新分片等多个 BUG. WAL 在启动加载时进行了优化. 新增了 /ap

HTML 5.1 的 14 个新特性(含使用案例)

HTML5 属于万维网联盟 (W3C), 这个组织为整个网络界提供了标准,如此形成的协议可在全世界通行.在 2016 年 11 月, W3C 对长期行使的 HTML 5 标准进行了更新,它是2年内的第一次小更新.许多最开始提出的 HTML 5.1 功能特性都因为设计上的缺陷和缺乏浏览器厂商的支持而去掉了. 尽管有一些元素和功能提升被带进了 HTML 5.1 里面, 但它仍然是一个小的更新.其中的一些新的元素包含了组合标签, 现在这样的元素包括有 <dialog>, <details>

Visual Basic 14 的 14 大新特性

与Visual Studio类似,Visual Basic也将从版本12直接跳到14.虽然新版本中的许多特性对于C#来说也是首次引进,但仍然有大量的功能增强是特别针对VB的,旨在简化VB的使用.本文列举了一些最令我们感兴趣的特性. 对Null的支持 新版本的一个特性是对null值的支持,该特性使用?.操作符.这一特性与C#相同,如果操作符左方的表达式返回值不为null,则继续计算右方表达式.在处理外部资源所返回的少量数据时,该特性尤其有用.举例来说: If customer.PrimaryRes

Xcode7新特性

更新Xcode7之后报错: Assertion failure in -[UIApplication _runWithMainScene:transitionContext:completion:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3491.2.5/UIApplication.m:3173 原因:新的SDK不允许在设置rootViewController之前做过于复杂的操作,导致在didFinish

C++ 14 新特性总结

转载自: http://www.codeceo.com/article/cpp-14-new-features.html C++14 这一继C++11 之后的新的 C++ 标准已经被正式批准,正在向 ISO 提交,将于年内发布.C++之父 Bjarne Stroustrup 说道,尽管与C++11 相比,C++14 的改进“有意做的比较小”,但是仍然为用户“带来了极大的方便”,是实现使C++“对新手更为友好”这一目标的步骤之一. 在 C++ 的时间表中,C++14 按计划是一个小版本,完成制定C

Xcode And iOS9新特性

Xcode And iOS9 1. Xcode7 新特性 > 可直接在真机上运行自己的应用,只需要有苹果账号,无需购买苹果开发者账号. > 可设置在出现 EXC_BAD_ACCESS 错误时,显示更详细的错误信息. 设置方式:XCode->Product->Scheme->Edit Scheme 左侧选择“Run” 右侧选择“Diagnostics(诊断)” 在“Runtime Sanitization(运行时净化处理)” 勾选“Enable Address Sanitize

发布倒计时!JDK11为我们带来哪些新特性?

今年7月底,JDK11已经进入了Rampdown Phase Two阶段,这标志着该版本所有特性已经被冻结,不会有新的JEP会加入版本中. 这一阶段将会修复P1–P2级BUG,之后,JDK11预定于今年9月25日发布.确定发布的17个JEP如下,其中包括14个新特性以及3个移除的功能: 181: Nest-Based Access Control(基于嵌套的访问控制) 309: Dynamic Class-File Constants(动态类文件常量) 315: Improve Aarch64

MySQL8.0新特性【转】

Server层,选项持久化 mysql> show variables like '%max_connections%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | max_connections | 512 | | mysqlx_max_connections | 100 | +------------------------+-------

Atitit&#160;eclipse新特性总结3.1---4.4&#160;&#160;4.5

Atititeclipse新特性总结3.1---4.4  4.5 1. Eclipse 4.4 Luna正式发布了.1 1.1. 新版本的Eclipse默认对Java8提供支持1 1.2. 内存分析器.1 1.3. Other1 2. 代号 Mars 的 Eclipse 4.5 版本发布了,2 2.1. 提升了 Java 8 的特性,3 2.2. 新 Java IDE 特性, 包括对嵌套的项目层次视图,可自定义 perspectives,并提升了文本搜索的速度.3 3. Part:: atiti