请提供一些OBJECTIVE-C块语法帮助。
这是我的通话网站(AppDelegate)-XCode自动完成
目标C
[SwiftClass passValue: response completion:^(NSDictionary<NSString *,NSString *> * _Nullable, ErrorResponse * _Nullable) { }];
我的方法看起来像这样(快速)
@objc static func passValue(code: ValidatedResponse, completion: @escaping ([String : String]?, ErrorResponse?) -> Void)
我收到一条错误消息: Parameter name omitted
所以,我给这样的参数起了名字:
[SwiftClass passValue: response completion:^(NSDictionary<NSString *,NSString *> *responseDictionary _Nullable, ErrorResponse *errorResponse _Nullable) {}];
现在我得到这个错误:
Incompatible block pointer types sending 'void (^)(NSDictionary<NSString *,NSString *> *__strong)' to parameter of type 'void (^ _Nonnull)(NSDictionary<NSString *,NSString *> * _Nullable __strong, ErrorResponse * _Nullable __strong)'
你们知道我在ObjectiveC中调用方法的方式可能有什么问题吗?
顺便说一句,是的,我知道文档和http://fuckingblocksyntax.com/,我已经浏览了那里并且无法解决问题。
我找到了!参数名称必须放在Nullable之后,如下所示:
[SwiftClass passValue: response completion:^(NSDictionary<NSString *,NSString *> * _Nullable responseDictionary, ErrorResponse * _Nullable errorResponse) {}];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句