swift - Objective-C 和 Swift,使用辅助编辑器。可空性
问题描述
我目前正在关注Paul Hudson 的书Objective-C for Swift developers。
在本书的Nullability一章中,我创建了一个类:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface PersonNullabilityCheck : NSObject @property NSString *name;
- (instancetype)initWithName:(NSString*)name;
- (NSString*)fetchGreetingsForTime:(NSString*)time; @end
NS_ASSUME_NONNULL_END
之后,Editor -> Assistant。最后,Counterparts -> PersonNullabilityCheck.h(Swift 5 接口)
在本书的这一点上,Paul 展示了 Swift 是如何看待这个 Objective-C 类的。在书中它看起来像这样:
import Foundation
public class Person: NSObject {
public var name: String!
public init!(name:String!)
public func fetchGreetingForTime(time: String!) -> String!
}
这里的一切都是隐含的。
但是,当我这样做时,我可以看到:
import Foundation
open class PersonNullabilityCheck : NSObject {
open var name: String
public init(name: String)
open func fetchGreetings(forTime time: String) -> String
}
我想,自从这本书写完后,开发了一些新的、更好的技术来处理可空性?
如果有人可以向我解释区别在哪里以及如何阅读,我将不胜感激。非常感谢!
解决方案
好的,我知道了,答案就在那里,我没有注意到。
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
这些与书中版本不同的代码行使每个元素都自动不可为空。因此,我假设我不必担心进行手动检查,但如果我想让某些东西不可为空,我需要手动添加它。
谢谢。
推荐阅读
- c# - JsonConvert.DeserializeObject 中的“无法对空引用执行运行时绑定”
( 回复 ) - javascript - 使用 JavaScript 或 jQuery 从父/父动态获取第一个标题标签
- python - 如何在 Postman 中上传文件?
- boost-geometry - 需要一个带有地理坐标和最近查询的 boost-geometry rtree 示例
- vue.js - 带有 Axios 的 Vue.js 使用来自其他方法的数据
- python - 蟒蛇逃生室计时器
- ionic-framework - 在离子可选上显示分隔符
- python-3.x - 安装成功后无法导入 Bert_Text
- spring-cloud-dataflow - 如何在 Spring 数据流服务器中未经公共许可从 S3 存储桶注册应用程序
- angular - Mat-tree 创建具有要显示的值和 id 的树