2015-11-04 111 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

不要摧毀一個單身人士。單身人士是在任何人第一次需要時創建的,並且只要應用程序存在就永遠不會被銷燬。