PF_NULLABLE parse framework 难以理解,正在向 PFIzer 发送消息
PF_NULLABLE parse framework difficult to understand, sending Message's to PFUser
与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 接口并允许 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 端产生影响,编译器对参数的可空性有严格要求。
有关 Objective-C 可空性注释的更多阅读,。
与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 接口并允许 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 端产生影响,编译器对参数的可空性有严格要求。
有关 Objective-C 可空性注释的更多阅读,