Swift Nullability and Objective

  • 时间:
  • 浏览:0

加上注解以后:

为了安全起见,或多或少规则也有或多或少例外情況:

现在或多或少人 给或多或少人 的Objective-C头文件加上了nullability注解,或多或少人 在Swift中使用它:

在Objective-C中加上注解以后:

不带下划线的形式比带下划线的形式看起来更简洁,但你仍然都要将它们应用到头文件的每一个类型里。肯能你随便说说麻烦一起想让头文件变得更加简洁,你就会使用到审查区域。

那些Swift代码非常清晰。不到或多或少细节的变化,以后它让人的框架使用起来更爽。

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

或多或少功能给或多或少人 带来了一个新的类型注解:__nullable__nonnull,就像你看完的,__nullable可不都要表示一个NULL肯能nil值,而__nonnull则刚好相反。肯能你违反了或多或少规则,你肯能收到编译器的警告:

你的Objective-C框架现有的代码写对什么以后?是不是能安全的改变它们的类型? Yes, it is.

通过Bridging-Header文件,Swift可不都要与Objective-C无缝调用,以后Swift与Objective-C一个很大的不同点:Swift支持Optional类型。比如NSViewNSView?,在Objective-C里对此不到本身 表示,即NSView *,既可不都要用来表示该View为nil、都可不还上能表示为非nil,此时Swift编译器是无法选泽或多或少NSView是也有Optional类型的,或多或少情況下Swift编译器会把它当作NSView!外理,隐式拆包。

大多数情況下,应该接受nullablenonnull,你当前所使用的断言肯能异常过深暴了:违反约定是任务管理器员老要犯的错误(而nullablenonnull能在编译时就外理什么的什么的问题)。很重的,返回值有你在身边能控制的东西,永远不应该对一个non-nullable的返回类型返回一个nil,除非这是为了向后兼容。

在早期发布的Xcode版本中,苹果机6机机的或多或少框架针对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外理

肯能想更加轻松的加上那些注解,没办法 让人把Objective-C头文件的某个区域标记为都要审查(for nullability),在或多或少区域内,所有简单的指针类型也有被当作nonnull,或多或少人 以后的例子会变成却说 :

你能在任何地方使用__nullable__nonnull关键字,比如和标准C的const一起使用,都可不还上能直接应用到指针上。以后在大多数情況下,让人以优雅的依据写下那些注解:在依据定义或声明里,假若类型是一个简单的对象肯能Block指针,你就能以不带下划线的依据(nullablenonnull)直接写在左括号上方:

让人通过Error Handling Programming Guide了解更多完全内容。