如何OC

问题描述:

使用SWIFT封闭在斯威夫特UIViewController,我的代码:如何OC

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文件,它显示了一个错误:

Incompatible block pointer types assigning to 'NSString * _Nonnull(^_Nullable)(void)'from 'char *(^)(void)'

错误在哪里...(对不起,我忘了@之前的“Hello block”在OC文件中。这是一个粗心的错误。现在它工作正常。谢谢!)

+0

对不起,您可以通过OC是什么意思? –

+0

我在“Hello block”之前忘了@。这是一个粗心的错误。感谢您看我的问题。 – William

你忘了"Hello block"@,从而你是返回一个C字符串,因为你没有明确指定该块的返回类型,编译器推断它为char*,这显然是不兼容与NSString*

如果声明块为^NSString*(){,那么你会得到一个错误,告诉返回值不匹配,甚至建议你添加@

+0

谢谢!我刚才发现那个错误。这是一个粗心的错误! – William