gpt4 book ai didi

ios - PF_NULLABLE 解析框架难以理解,向 PFUser 发送消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:01:02 24 4
gpt4 key购买 nike

使用 Xcode 6.3 解析。框架给了我错误,所以我下载了更新的 Parse 框架,一切开始工作。

现在,有一些新的东西,我试图了解这个方法 logInWithUsername 是什么。以前它曾经很简单。我在编写代码时看到更多 null。在某些时候我感到困惑,主要是指向指针的指针(即 NSError)。

[PFUser logInWithUsername:(NSString * __nonnull) 
password:(NSString * __nonnull)
error:(NSError * __nullable __autoreleasing * __nullable)];

当我跳到定义时,这是一个完全不同的故事,这里的语法似乎很清楚:

+ (PF_NULLABLE instancetype)logInWithUsername:(NSString *)username
password:(NSString *)password
error:(NSError **)error;

我是否遗漏了此框架的配置或设置方面的内容?

最佳答案

从 Objective-C 端,您可以完全忽略这些可空性注释。这些严格用于与 Swift 接口(interface),并允许 Swift 将对象视为可选对象还是非可选对象,而不是将所有内容都视为隐式展开的可选对象。

如果我们翻译您的 Objective-C 方法:

[PFUser logInWithUsername:(NSString * __nonnull) 
password:(NSString * __nonnull)
error:(NSError * __nullable __autoreleasing * __nullable)];

Swift 等价物是:

PFUser.logIn(username: String, password: String, error: inout NSError?)

要点是这样的:该方法不接受 nil 作为用户名或密码参数,但它需要对可选错误对象的可选引用。

也就是说,不管你的指针是nil,还是它指向的是nil(两者都允许是nil)。该方法将对其进行排序。

如果调用该方法并为错误参数传递 nil,则传递的是 nil 指针。如果你传递一个未初始化的 NSError 指针 (NSError *error = nil;),你传递的是一个非 nil 指针到一个 nil 指向 NSError 对象的指针。

但是,如果您从 Objective-C 端使用这个库,您可以完全忽略它。它像往常一样工作。这只会对 Swift 端产生影响,在 Swift 端,编译器对参数的可空性有严格要求。

有关 Objective-C 可空性注释的更多阅读,see this Stack Overflow answer .

关于ios - PF_NULLABLE 解析框架难以理解,向 PFUser 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com