Swift Nullability and Objective

  • 时间:
  • 浏览:0
  • 来源:uu快3注册_uu快3官网

在早期发布的Xcode版本中,iPhone手机手机的一点框架针对Swift的Optional类型进行了一点专门审查,使朋友的API才能适配Optional,而Xcode 6.3的发布,给朋友带来了Objetive-C的那我新价值形式:nullability注解,利用该价值形式朋友才能对个人的代码进行类式的解决。

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

其中itemWithName土办法的name参数没办法 使用Nullability价值形式,后来 会被当作nonnull解决

我能 通过Error Handling Programming Guide了解更多完整性内容。

那此Swift代码非常清晰。只有一点细节的变化,后来 它我能 的框架使用起来更爽。

对于@property,你才能以同样的土办法写在它的属性列表里:

通过Bridging-Header文件,Swift可不还可以与Objective-C无缝调用,后来 Swift与Objective-C有那我很大的不同点:Swift支持Optional类型。比如NSViewNSView?,在Objective-C里对此只有四种 表示,即NSView *,既可不还可以用来表示该View为nil、才能表示为非nil,此时Swift编译器是无法选着一点NSView否是是是 Optional类型的,一点情况表下Swift编译器会把它当作NSView!解决,隐式拆包。

机会想更加轻松的加在那此注解,没办法 我能 把Objective-C头文件的某个区域标记为需要审查(for nullability),在一点区域内,所有简单的指针类型否是被当作nonnull,朋友后来 的例子会变成那我:

为了安全起见,一点规则否是 一点例外情况表:

一点功能给朋友带来了那我新的类型注解:__nullable__nonnull,就像你看过的,__nullable可不还可以表示那我NULL机会nil值,而__nonnull则刚好相反。机会你违反了一点规则,你机会收到编译器的警告:

你能在任何地方使用__nullable__nonnull关键字,比如和标准C的const同去使用,才能直接应用到指针上。后来 在大多数情况表下,我能 以优雅的土办法写下那此注解:在土办法定义或声明里,假如类型是那我简单的对象机会Block指针,你就能以不带下划线的土办法(nullablenonnull)直接写在左括号顶端:

加在注解后来 :

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

在Objective-C中加在注解后来 :

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

大多数情况表下,应该接受nullablenonnull,你当前所使用的断言机会异常太深了暴了:违反约定是程序运行运行员总是犯的错误(而nullablenonnull能在编译时就解决大间题)。一阵一阵的,返回值是你能控制的东西,永远不应该对那我non-nullable的返回类型返回那我nil,除非这是为了向后兼容。

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