Meh*_*mar 14 initialization objective-c ios ios9 xcode7
有人可以详细说明为什么nonnull在iOS 9中引入?
例如,该NSArray方法+ (instancetype)array;现在+ (instancetype nonnull)array;
请参阅:https: //developer.apple.com/library/prerelease/ios/releasenotes/General/iOS90APIDiffs/frameworks/Foundation.html
这是一个客观的c级功能,这将如何影响现有的应用程序?
Mru*_*nal 17
他们已经确保无论类型不可为空,它现在都是一种nonnull类型.
像以前的NSMutableArray addObject方法一样
- (void)addObject:(ObjectType)anObject
Run Code Online (Sandbox Code Playgroud)
现在它已改为
- (void)addObject:(ObjectType nonnull)anObject
Run Code Online (Sandbox Code Playgroud)
因此,这意味着您无法将null对象(nil)传递给此方法.同样,在你的情况下
+ (instancetype nonnull) array
Run Code Online (Sandbox Code Playgroud)
方法永远不会回来nil.
参考:https://developer.apple.com/swift/blog/?id = 25
nonnull是一个关键字,告诉编译器返回值(或参数或属性)永远不会是nil.这是在以前版本的Xcode中引入的,以便在Obj-C和Swift的可选类型之间实现更好的互操作性.
您可以在官方Swift博客上了解更多相关信息
nonnullis 关键字通知编译器对象/参数返回的值永远不会是nil。
一般来说,您应该大致以当前使用断言或异常的方式来看待可为空和非空:违反约定是程序员的错误。特别是,返回值是您可以控制的,因此您不应该为不可为 null 的返回类型返回 nil ,除非是为了向后兼容。
| 归档时间: |
|
| 查看次数: |
12013 次 |
| 最近记录: |