如何在Objective-C中使用Swift闭包

如何在Objective-C中使用Swift闭包,objective-c,swift,closures,block,Objective C,Swift,Closures,Block,我在产品中创建了一个swift文件。我的swift文件如下: import UIKit typealias handler = (String?, Bool?)->Void @objc class godness: NSObject { var test:String? func sad()->String? { test = "adfasdfaf" return test } func testX(sss:String?, xx:String?) { }

我在产品中创建了一个swift文件。我的swift文件如下:

import UIKit
typealias handler = (String?, Bool?)->Void

@objc  class godness: NSObject {

var test:String?
func sad()->String?
{
    test = "adfasdfaf"
    return test
}

func testX(sss:String?, xx:String?)
{

}

func godnessGetData(hander:handler)
{
    var str:String = ""
    let manager = AFHTTPRequestOperationManager()

    let para = ["section_id":"1",
    "type":"json"];

    manager.POST("http://api.xxx.com/xxx.php",
        parameters: para,
        success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
            str = "JSONsssss:  \(responseObject.description)"
            hander(str, false)
        },
        failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
            str = "Error: \(error.localizedDescription)"

    })
}
}
@interface godness : NSObject
@property (nonatomic, copy) NSString * __nullable test;
- (NSString * __nullable)sad;
- (void)testX:(NSString * __nullable)sss xx:(NSString * __nullable)xx;
- (SWIFT_NULLABILITY(nonnull) instancetype)init 
@end
但是在产品名称Swift.h中没有godnessGetData。 产品名称Swift.h如下所示:

import UIKit
typealias handler = (String?, Bool?)->Void

@objc  class godness: NSObject {

var test:String?
func sad()->String?
{
    test = "adfasdfaf"
    return test
}

func testX(sss:String?, xx:String?)
{

}

func godnessGetData(hander:handler)
{
    var str:String = ""
    let manager = AFHTTPRequestOperationManager()

    let para = ["section_id":"1",
    "type":"json"];

    manager.POST("http://api.xxx.com/xxx.php",
        parameters: para,
        success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
            str = "JSONsssss:  \(responseObject.description)"
            hander(str, false)
        },
        failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
            str = "Error: \(error.localizedDescription)"

    })
}
}
@interface godness : NSObject
@property (nonatomic, copy) NSString * __nullable test;
- (NSString * __nullable)sad;
- (void)testX:(NSString * __nullable)sss xx:(NSString * __nullable)xx;
- (SWIFT_NULLABILITY(nonnull) instancetype)init 
@end
我不知道Objective C是否可以使用swift闭包。
对不起,我的英语很差。

您可以将
@objc
添加到方法中以强制发送错误消息。基本上,ObjC不支持可选的值类型(
Bool?
)。如果您将其更改为just
Bool
它应该可以工作。是的,它可以工作。非常感谢您。感谢您提供有关
@objc
的信息!我不知道它也可以用于属性。