首页 > 解决方案 > 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
}

我想,自从这本书写完后,开发了一些新的、更好的技术来处理可空性?

如果有人可以向我解释区别在哪里以及如何阅读,我将不胜感激。非常感谢!

标签: swiftobjective-cobjective-c-swift-bridge

解决方案


好的,我知道了,答案就在那里,我没有注意到。

NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END

这些与书中版本不同的代码行使每个元素都自动不可为空。因此,我假设我不必担心进行手动检查,但如果我想让某些东西不可为空,我需要手动添加它。

谢谢。


推荐阅读