如何创建将 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 或任何闭包时使用的东西
我创建了一个名为 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 或任何闭包时使用的东西