我确信这是一厢情愿的想法,但是有一个+initialize
的对应物会在一个类的所有实例被解除分配时自动被调用吗?
我在+ initialize中分配一个单例对象,在我的第一个类实例被分配之前调用它。一旦我的类实例全部被释放,我希望能够释放该对象。但是,如果我的班级对象被重新分配,那么我需要再次调用+initialize
。我怀疑Cocoa不会做那种级别的班级管理,我可能需要将我的课程包装在班级经理班级......
我说错了吗?
答案 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
将始终返回相同的对象,但只要没有其他人使用它就会消失。