代码改变世界

swift开发笔记16

2017-12-07 18:05  dengchaojie_learner  阅读(156)  评论(0编辑  收藏  举报

 

、、监听系统通知(APP进入后台)

NSNotification.Name.UIApplicationDidEnterBackground

、、deinit == de + init,相当于oc中的delloc

  deinit {

    NotificationCenter.default.removeObserver(self)

  }

、、model的encode和decode。坑:没有写继承, NSCoding。例如:class Album: NSObject, NSCoding {}

  required init(coder decoder: NSCoder) {

    super.init()

    self.title = decoder.decodeObject(forKey: "title") as! String

    self.artist = decoder.decodeObject(forKey: "artist") as! String

    self.genre = decoder.decodeObject(forKey: "genre") as! String

    self.coverUrl = decoder.decodeObject(forKey: "cover_url") as! String

    self.year = decoder.decodeObject(forKey: "year") as! String

  }

  

  // will be called when Album to be achived

  func encode(with aCoder: NSCoder) {

    aCoder.encode(title, forKey: "title")

    aCoder.encode(artist, forKey: "artist")

    aCoder.encode(genre, forKey: "genre")

    aCoder.encode(coverUrl, forKey: "cover_url")

    aCoder.encode(year, forKey: "year")

  }

、、重写description

  override var description: String {

    return "title: \(title)" +

           "artist: \(artist)" +

           "genre: \(genre)" +

           "coverUrl: \(coverUrl)" +

           "year: \(year)"

  }

 

、、区别是什么

  // MARK: - Lifecycle

  override init(frame: CGRect) {

    super.init(frame: frame)

    initializeScrollView()

  }

  

  required init(coder aDecoder: NSCoder) {

    super.init(coder: aDecoder)!

    initializeScrollView()

  }

 

 

  // call reload when added to another view

  override func didMoveToSuperview() {

    reload()

  }