Swift Nullability and Objective

  • 时间:
  • 浏览:1
  • 来源:5分PK10_5分PK10官网

我应该 通过Error Handling Programming Guide了解更多完整篇 内容。

这俩 功能给大伙带来了2个多 新的类型注解:__nullable__nonnull,就像你都看的,__nullable都里都可以表示2个多 NULL由于nil值,而__nonnull则刚好相反。由于你违反了这俩 规则,你由于收到编译器的警告:

为了安全起见,这俩 规则完整篇 都是这俩例外情况汇报:

Xcode 6.3(iOS 8.3 SDK)引入了NS_ASSUME_NONNULL_BEGIN / END

其中itemWithName依据的name参数越来越使用Nullability结构,但会 会被当作nonnull避免

由于想更加轻松的加进有有哪些注解,越来越我应该 把Objective-C头文件的某个区域标记为前要审查(for nullability),在这俩 区域内,所有简单的指针类型完整篇 都是被当作nonnull,大伙如果的例子会变成从前:

大多数情况汇报下,应该接受nullablenonnull,你当前所使用的断言由于异常太深了暴了:违反约定是程序运行员老会 犯的错误(而nullablenonnull能在编译时就避免什么的问题)。很糙的,返回值在等你能控制的东西,永远不应该对2个多 non-nullable的返回类型返回2个多 nil,除非这是为了向后兼容。

在早期发布的Xcode版本中,苹果手机5手机苹果手机5手机的这俩框架针对Swift的Optional类型进行了这俩专门审查,使大伙的API都都可以适配Optional,而Xcode 6.3的发布,给大伙带来了Objetive-C的2个多 新结构:nullability注解,利用该结构大伙都都可以对自己的代码进行同类的避免。

通过Bridging-Header文件,Swift都里都可以与Objective-C无缝调用,但会 Swift与Objective-C有2个多 很大的不同点:Swift支持Optional类型。比如NSViewNSView?,在Objective-C里对此只某种表示,即NSView *,既都里都可以用来表示该View为nil、都都可以表示为非nil,此时Swift编译器是无法取舍这俩 NSView是完整篇 都是Optional类型的,这俩 情况汇报下Swift编译器会把它当作NSView!避免,隐式拆包。

你能在任何地方使用__nullable__nonnull关键字,比如和标准C的const同時 使用,都都可以直接应用到指针上。但会 在大多数情况汇报下,我应该 以优雅的依据写下有有哪些注解:在依据定义或声明里,假使 类型是2个多 简单的对象由于Block指针,你就能以不带下划线的依据(nullablenonnull)直接写在左括号后边:

加进注解如果:

你的Objective-C框架现有的代码写对哪年?否有能安全的改变它们的类型? Yes, it is.

对于@property,你都都可以以同样的依据写在它的属性列表里:

有有哪些Swift代码非常清晰。不都都可以这俩细节的变化,但会 它我应该 的框架使用起来更爽。

不带下划线的形式比带下划线的形式看起来更简洁,但你仍然前要将它们应用到头文件的每2个多 类型里。由于你觉得麻烦同時 想让头文件变得更加简洁,你就会使用到审查区域。

现在大伙给大伙的Objective-C头文件加进了nullability注解,大伙在Swift中使用它:

在Objective-C中加进注解如果: