+初始化是否有类拆解对应?

时间:2010-03-02 11:48:46

标签: objective-c cocoa cocoa-touch

我确信这是一厢情愿的想法,但是有一个+initialize的对应物会在一个类的所有实例被解除分配时自动被调用吗?

我在+ initialize中分配一个单例对象,在我的第一个类实例被分配之前调用它。一旦我的类实例全部被释放,我希望能够释放该对象。但是,如果我的班级对象被重新分配,那么我需要再次调用+initialize。我怀疑Cocoa不会做那种级别的班级管理,我可能需要将我的课程包装在班级经理班级......

我说错了吗?

2 个答案:

答案 0 :(得分:1)

没有。

我建议不要删除单例,几乎没有意义,因为它只是一个对象,这不会占用太多空间。

如果您确实需要此行为,只需覆盖+alloc-dealloc即可计算当前实例。 (或在垃圾收集环境中-finalize)。

答案 1 :(得分:0)

这只能在ARC下很好地工作(将弱引用归零,即iOS5),但是做这样的事情的好方法是在对象上使用类方法(没有额外的单例),即:

+ (id)someResource
{
    __weak static id resource;
    if (!obj)
    {
        return resource;
    }
    else
    {
        id tmpResource = [SomeResource resource];
        resource = tmpResource;
        return resource;
    }
}
只要其他人持有+someResource

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