【发布时间】:2014-12-28 07:07:01
【问题描述】:
这与标准的singleton pattern 略有不同,如果一个对象的所有外部引用都已释放,那么单例也将被释放。然后,稍后,当请求一个新对象时,会创建一个新的单例。所以,是这样的:
MyThing *thing1 = [MyThing new];
MyThing *thing2 = [MyThing new];
// thing1 & thing2 are the same object.
thing1 = nil;
thing2 = nil;
thing1 = [MyThing new];
thing2 = [MyThing new];
// thing1 and thing2 are a the same objet, but it's a different object than above.
我尝试使用一个弱静态变量来保留我的作用域单例,但这不起作用,因为我无法在 ARC 下增加保留计数。这让我想知道:这可能吗?
【问题讨论】:
-
你为什么需要这个?
-
似乎通过工厂访问的弱引用可以做到这一点。工厂必须像单身工厂一样工作。
-
因为我不会经常需要这个对象,但是当我需要的时候,我会想同时在一堆解耦的地方访问同一个对象。
-
thing1 和 thing 2 不是同一个对象。它们是 MyThing 类的两个不同实例。
-
@HotLicks 这就是我的想法,但它实际上并没有工作。也许我不应该在
-dealloc中将nil分配给它?如果它很弱,当最终引用被释放时,它是否会自行转到nil?
标签: objective-c singleton retaincount