2015-11-04 77 views
9

单身如何摧毁迅速

单身我创建这样一个单:如何destory在迅速

class MyManager { 
    private static let sharedInstance = MyManager() 
    class var sharedManager : MyManager { 
     return sharedInstance 
    } 
} 
+0

“破坏”是什么意思?内存由ARC(自动参考计数)自动处理。您不需要跟踪变量使用的内存,也不需要手动释放它们使用的内存。 – Arc676

+2

@ Arc676,不是。这是一种静态方法,ARC绝不会杀死它。你需要强制它重建。 – Brduca

+1

如果您需要显式销毁实例并分配一个新实例,那么只需将'let'更改为'var'并实现一个将另一个MyManager()分配给它的方法,并且之前的实例将由ARC收集。 – cezheng

回答

21

如何处置一个Singleton的当前实例只是一个简单的例子:

import UIKit 

class AnyTestClass 
{ 
    struct Static 
    { 
     private static var instance: AnyTestClass? 
    } 

    class var sharedInstance: AnyTestClass 
    { 
     if Static.instance == nil 
     { 
      Static.instance = AnyTestClass() 
     } 

     return Static.instance! 
    } 

    func dispose() 
    { 
     AnyTestClass.Static.instance = nil 
     print("Disposed Singleton instance") 
    } 

    func saySomething() 
    { 
     print("Hi") 
    } 

} 

// basic usage 
AnyTestClass.sharedInstance.saySomething() 
AnyTestClass.sharedInstance.dispose() 

希望它可以帮助。

+0

如果在'private static var instance:AnyTestClass?'中使用var,它可以线程安全吗? – Dennis

+0

不是。为了使线程安全,您需要使用dispatch_once,我会锁定它直到它被创建。 http://stackoverflow.com/questions/24024549/dispatch-once-singleton-model-in-swift – Brduca

+0

丹尼斯,如果是这样,标记你的问题解决。 – Brduca

4

不要摧毁一个单身人士。单身人士是在任何人第一次需要时创建的,并且只要应用程序存在就永远不会被销毁。