OC 与 Swift混编 Swift的闭包传值到OC中

随着Swift的日益完善,终究会取代OC的地位,就像Kotlin取代Java一样,不是时间的问题,而是使用者愿意不愿意被时代淘汰的问题

首先是Swift中定义闭包

一定要注意在Swift的类前面加上@objcMembers,这样才能在OC中引用;在引用的变量前面加上@objc

@objcMembers class XuanzedituViewController: BaseViewController{
    typealias MapClosure = (Dictionary<String, Any>) -> Void
    @objc var blo:MapClosure?
}
//这样写就好了

###在OC中接着,按block那样的写

XuanzedituViewController *xz = [[XuanzedituViewController alloc] init];
xz.blo=^(NSDictionary<NSString *,id> *d){
    //To do something
};
[_c.navigationController pushViewController:xz animated:YES];

就酱

posted @ 2017-12-14 10:45  赫凯  阅读(45)  评论(0)    收藏  举报