Swift 5.1:如何将NULL作为参数传递?

问题描述 投票:1回答:1

我正在尝试为CFNotificationCenter设置观察服务器。

documentation状态:

名称

要观察的通知的名称。如果为NULL,则针对对象发布的任何通知调用回调。如果center是达尔文的通知中心,则此值不能为NULL。

据我了解,NULL在Swift中并不存在。那么这个论点应该是什么呢?

以下代码可正常编译,但空白字符串不是NULL

CFNotificationCenterAddObserver(
    CFNotificationCenterGetDistributedCenter(),
    UnsafeMutableRawPointer?.none,
    receiveNotification,
    "" as CFString,
    UnsafeRawPointer?.none,
    CFNotificationSuspensionBehavior.deliverImmediately
)

我尝试过CFString?NSNullNSNull as String,但编译器抱怨。

我误解了文档吗?如何为参数paramenter提供NULL值?

swift core-foundation
1个回答
2
投票

来自(Objective-)C的空指针是Swift中的可选指针,比较SE-0055 Make unsafe pointer nullability explicit using Optional

因此,在Swift中,您传递nil作为名称,以便调用该对象发布的任何通知。

© www.soinside.com 2019 - 2024. All rights reserved.