代码之家  ›  专栏  ›  技术社区  ›  andyvn22

从XML读取指针而不确定相关Obj-C实例是否存在

  •  0
  • andyvn22  · 技术社区  · 17 年前

    问题是将此XML读回。。。当我创建一个“子对象”时,我遇到了一个ID,但不能保证它引用的对象已经创建。由于引用可能是循环的,因此甚至没有一个读取顺序来解决这个问题。

    我该怎么办?我当前的解决方案是用包含唯一ID的字符串替换(在实际实例变量中)引用。不过,这很糟糕,因为要使用这些实例变量,而不是像 [oneObject aSibling] 我现在必须做一些类似的事情 [theParent childWithID:[oneObject aSiblingID]] . 我想我可以创造一个 aSibling 方法来简化事情,但感觉有比这更干净的方法。有?

    2 回复  |  直到 17 年前
        1
  •  2
  •   bbum    17 年前

    这听起来很像是你在重新发明NSCoding,因为它处理循环引用,等等。。。现在,也许有一个很好的理由重新发明这个轮子。只有你能回答 那个 问题。

    第1步:从备份存储中取出所有对象并重新组合。当每个对象出现时,将其放入字典或以UID为键的地图中。每当对象包含UID时,将该对象注册为需要修复的对象;将其添加到取消归档期间保留的集合或数组中。

    过程2:遍历需要修复的对象集或数组并修复它们,用过程1中构建的地图中的对象替换UID。

    我在最后一段中遇到了一些分析错误。假设您的类被合理地声明,它们应该能够动态地修复自己。

    (综上所述,这正是在GC环境中更容易实现的数据结构。如果你的目标是Mac OS X,而不是iPhone,那么打开GC很可能会让你的生活更轻松)

        2
  •  0
  •   AlBlue RACGAMERUP    17 年前

    这种方法意味着您不必对所有实例都使用此贴图,而是只对第二次看到的对象进行替换。但是,您仍然需要能够唯一地引用已编写的第一个实例,不管是否通过指向数据结构中某个部分的指针,这取决于您正在编写的内容。