最近在写 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 现在是边学边写,这个闭包看起来有点看不懂。