如何创建将 weak self 传递到闭包内部的闭包签名

How to create a closure signature that passes weak self to inside the closure

我创建了一个名为 VerifyObject 的 class,它包含一个具有以下签名的函数

typealias handlerCodeID = (String) ->Void
typealias handlerCode = (Date, Code) ->Void
typealias handlerError = (NSError) ->Void


class func verifyObject(withID:String?,
  runOnEnter: handlerCode?,
  runOnExit: handlerCode?,
  runOnPause: handlerCodeID?,
  runOnError: handlerError?) 

当我 运行 这些 runOn... 闭包时,我会遇到需要在闭包内使用对 self 的引用、捕获自身并造成泄漏的情况。

我已经阅读了我能找到的关于在 swift 上创建 weak self 的所有内容,但是文字太过通俗易懂,我无法理解。

我知道 objective-c 的方式,但在 swift 上被认为是异端。

我如何创建这些 typealias 或函数签名或其他任何东西以将弱自我传递给这 4 个闭包中的每一个。

请像我5岁一样解释。好的,改成 4.

谢谢。

当您调用 handleCodeID 时,您可以传递 weak self,这样您就可以删除任何强引用循环。

因此,当您调用 verifyObject(...) 时,它会类似于...

Self.verifyObject(“someString”, { [weak self] date, code in 
//runonenter
},
{ [weak self] date, code in
 //runonexit
 }, 
{ [weak self] string in
 //runonpause
 },
{ [weak self] error in
 //runonerrir
})

你可以继续这个

typealias 实际上并不包含这个,它是你在调用指定的 typealias 或任何闭包时使用的东西