美文网首页
Swift defer

Swift defer

作者: sankun | 来源:发表于2019-06-17 12:24 被阅读0次

Swift 关键字

defer

字面意思是推迟, 那什么时候执行呢? 在函数即将结束(return 之前). 具体的使用场景有

  1. try catch
 func example () {
     defer {
        print("finally")    
      }
      do {
        throw NSError()
        print("error")
        } catch {
          print("handle error")
        }
 }
  1. 清理工作, 回收资源,加锁/解锁 等
func example () {
      let fileDescriptor = open(url.path, 0_EVTONLY)
      defer {
      close(fileDescriptor)       
      }
    // use fileDescriptor
}
func example() {
      let pointer = UnsafeMutablePointer<T>.allocate(capacity: 1)
      defer {
        pointer.deallocate(capacity: 1)
      }
      // use pointer 
}
func example() {
      lock.lock(); defer {   lock.unlock() }
      // 加锁内容
}
  1. completion block
    多分支函数的某个分支需要return,恰巧忘了调** completion block ** 此时可以使用defer
 func example(completion: () -> void) {
  defer {
      comletion()
   }
  
   guard error == nil else { return }
   // handle success
}

4.调super 方法

调super 方法之前需要做一些准备工作,比如UICollectionViewLayoutprpare(forCollectionViewUpdates:) , 那么我们就可以把调用super的部分放到defer里:

func override exmpale() {
        defer  {
        super.example()
        }
        // some preparation before super.example()
}

参考文章

https://www.jianshu.com/p/a71d87d92459

相关文章

  • Swift defer & guard

    2019-01-29Swift defer 简单解答 1. defer是什么? The defer keyword...

  • Objective-C中实现Swift中的defer

    Swift中有一个defer A defer statement is used for executing co...

  • 读喵神文章有感

    昨天读了喵神的《关于 Swift defer 的正确使用》,对defer有了新的认识。之前在自学swift中也看到...

  • swift  defer  关键字 推迟执行

    Swift defer 关键字 延迟执行

  • swift-defer

    来源自喵神的博客:关于 Swift defer 的正确使用 defer简介 从语言设计上来说,defer 的目的就...

  • Swift之Defer

    Swift2.0中加入了defer新语法声明。defer译为延缓、推迟之意。那么在Swift2.0中它将被应用于什...

  • 用OC写一个defer

    defer defer是Swift中比较常用的一种语法,defer中的代码将会在当前的代码块结束之后调用。正如文档...

  • Swift defer

    defer 里的代码会在函数 return 之前执行,无论函数是从哪个分支 return的,包括有try catc...

  • Swift defer

    Swift 关键字 defer 字面意思是推迟, 那什么时候执行呢? 在函数即将结束(return 之前). 具体...

  • Swift - defer

    在这个processFile函数中,因为涉及了文件操作,是需要关闭文件的,而在processFile这个函数的处理...

网友评论

      本文标题:Swift defer

      本文链接:https://www.haomeiwen.com/subject/eqzofctx.html