©️ OverlookArt
首页 / Swift / Block 与 Closure

Block 与 Closure

OC 的 Block 与 Swift 的 Closure

相互转化

  1. Closure 转 Block

    1let closure: (String) -> Void = { str in
    2
    3}
    4let block = closure as @convention(block) (String) -> Void
    5let blockObject = unsafeBitCast(block, to: AnyObject.self)
    
  2. Block 转 Closure

    1typealias closureType = @convention(block) (String) -> Void
    2// OC_block 为 OC 定义的 block
    3let closure = unsafeBitCast(OC_block as AnyObject, to: closureType.self)