如何在Swift 2中存储函数引用?

根本问题是SkPaymentQueue.defaultQueue().addPayment()不允许您传递回调函数,并且无法将运行时(我知道)的函数传递给SKPaymentTransactionObserver.我正在使用React-native版本0.28创建一个允许我进行应用内购买的模块,但是我想在应用内购买完成后回调一个
Javascript函数.

因此,我将在类中存储对RCTResponseSenderBlock回调的引用,并在SKPaymentTransactionObserver中引用它.但是,我不知道如何在Swift中引用一个函数.

我试过制作以下变量

weak var purchaseCallback:RCTResponseSenderBlock = nil

在课程的顶部,所以我可以设置它并在以后引用它;然而,斯威夫特抱怨如下:

Nil无法初始化指定类型’RCTResponseSenderBlock’

如果有办法处理功能参考和/或更好的方式进行购买回调,我会感激一些帮助!

最佳答案 正如Bryan Chen在上面的评论中指出的那样,使变量可选成功.

这是我如何定义保存回调的变量:

var purchaseCallback: RCTResponseSenderBlock? = nil

这是我如何存储Swift中由React-native调用的函数的函数引用:

@objc func purchaseProduct(identifier: String, callback successCallback: RCTResponseSenderBlock) {
  purchaseCallback = successCallback
}
点赞