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

是否有与+initialize对应的类拆分?

  •  1
  • mahboudz  · 技术社区  · 15 年前

    我相信这是一厢情愿的想法,但有没有一个对应的 +initialize 当一个类的所有实例都被释放时,它将自动被调用?

    我在+initialize中分配了一个singleton对象,这是在我的第一个类实例被分配之前调用的,我希望在我的类实例都被释放后能够释放这个对象。但是,如果我的类对象被重新分配,那么我需要 +初始化 再次接到电话。我怀疑cocoa没有做那种级别的类管理,我可能要把我的类包装成一个类管理器类…

    我说的对吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Georg Schölly Crazy Developer    13 年前

    没有。

    我建议你不要删除一个单独的,几乎没有意义,因为它是 只有一个物体 ,这不会占用很多空间。

    如果你真的需要这种行为,就重写 +alloc -dealloc 计算当前实例。(或) -finalize 在垃圾收集的环境中)。

        2
  •  0
  •   hypercrypt    13 年前

    这只在arc下很好地工作(使用零化弱引用,即ios5),但是这样做的一个好方法是在对象上使用类方法(没有额外的单例),即:

    + (id)someResource
    {
        __weak static id resource;
        if (!obj)
        {
            return resource;
        }
        else
        {
            id tmpResource = [SomeResource resource];
            resource = tmpResource;
            return resource;
        }
    }
    

    +someResource 将始终返回相同的对象,只要其他人坚持 resource ,但一旦没有其他人使用它,它就会消失。