Objective C 块语法 - Xcode 自动完成功能不起作用
Objective C block syntax - Xcode autocomplete is not working
一些 OBJECTIVE-C 块语法帮助,请。
这是我的呼叫站点 (AppDelegate) - 由 XCode
自动完成
Objective-C
[SwiftClass passValue: response completion:^(NSDictionary<NSString *,NSString *> * _Nullable, ErrorResponse * _Nullable) { }];
我的方法是这样的 (Swift)
@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) {}];
一些 OBJECTIVE-C 块语法帮助,请。
这是我的呼叫站点 (AppDelegate) - 由 XCode
自动完成Objective-C
[SwiftClass passValue: response completion:^(NSDictionary<NSString *,NSString *> * _Nullable, ErrorResponse * _Nullable) { }];
我的方法是这样的 (Swift)
@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) {}];