官术网_书友最值得收藏!

  • iOS Programming Cookbook
  • Hossam Ghareeb
  • 132字
  • 2021-07-09 18:29:44

How to do it...

  1. Create two classes, Person and Dog, with a relation between them, as shown in the following code snippet (this code snippet has a memory issue called reference cycle):
      class Dog{
        var name: String
        var owner: Person!
        init(name: String){
          self.name = name
        }
      }
      class Person{
        var name: String
        var id: Int
        var dogs = [Dog]()
        init(name: String, id: Int){
          self.name = name
          self.id = id
        }
      }
      let john = Person(name: "John", id: 1)
      let rex = Dog(name: "Rex")
      let rocky = Dog(name: "Rocky")
      john.dogs += [rex, rocky] // append dogs
      rex.owner = john
      rocky.owner = john
  1. Update the reference type of owner property in the Dog class to break this cycle:
      class Dog{
        var name: String
        weak var owner: Person!
        init(name: String){
        self.name = name
      }
    }
主站蜘蛛池模板: 涿州市| 中卫市| 孝感市| 乐亭县| 麻城市| 正蓝旗| 泰安市| 苍溪县| 丁青县| 宜川县| 海淀区| 浙江省| 新安县| 辽源市| 涞水县| 肇州县| 长海县| 宿迁市| 安国市| 巴中市| 平遥县| 鄯善县| 县级市| 宜春市| 贡山| 甘孜县| 兰西县| 恭城| 清镇市| 墨脱县| 东港市| 濮阳市| 黎城县| 巩留县| 安仁县| 枞阳县| 分宜县| 邵东县| 改则县| 织金县| 府谷县|