Swift 闭包回调报错: C function pointer cannot be formed from a closure that captures context

2021-08-07 20:27:10 +08:00
 elone

最近在写 flutter 跟 ios swift 原生通信的 demo,遇到一个问题,报这个错:

C function pointer cannot be formed from a closure that captures context

代码如下:



@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GeneratedPluginRegistrant.register(with: self)
    
    let controller: FlutterViewController = window?.rootViewController as! FlutterViewController

    
    CFNotificationCenterAddObserver(center, Unmanaged.passUnretained(self).toOpaque(), { (center, observer, name, object, userInfo) in
                  
        NSLog("Notify received")
        CustomChannel.sendMessageToFlutter(controller: controller)

public struct CustomChannel {
    
    static func sendMessageToFlutter(controller: FlutterViewController){
        let channel = FlutterMethodChannel(
            name: "paymentview",
            binaryMessenger: controller.binaryMessenger
        )

        DispatchQueue.main.async {
            channel.invokeMethod("authorized", arguments: nil)
                   }
    }
}


swift 现在是边学边写,这个闭包看起来有点看不懂。

1204 次点击
所在节点    Flutter
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/794312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX