在Swift UIViewController
中,我的代码:
import Foundation
import UIKit
typealias SayHello = ()->String
@objc class SwiftViewController:UIViewController{
var sayHello:SayHello?
override func viewDidLoad() {
super.viewDidLoad()
if let helloClosure = sayHello{
helloClosure()
}
}}
在我的OC UIViewController
中,我的代码:
swiftViewController.sayHello = ^(){
return "Hello block";
};
当Xcode
编译OC文件时,它显示错误:
分配给'NSString *的块指针类型不兼容 _Nnnull(^ _ Nullable)(void)'来自'char *(^)(void)'
错误在哪里......(对不起,我在OC文件中的“Hello block”之前忘记了@。这是一个不小心的错误。现在它工作正常。谢谢!)
答案 0 :(得分:1)
您忘记了@
之前的"Hello block"
,因此您返回了一个C字符串,并且由于您没有明确指定该块的返回类型,因此编译器将其推断为{ {1}},显然与char*
不兼容。
如果您将该块声明为NSString*
,那么您将收到错误消息,告知返回值不匹配,甚至建议您添加^NSString*(){