關於 Swift 單例的例子


               有的時候,我們需要一個類只要初始化一次就夠了,比如音頻播放器這種實例,因此需要我們使用單例,熟悉C++和OC都知道該怎么寫

class CSingleton /* 懶漢式 */
{ 
public:
    static CSingleton * GetInstance()
    {       
        if(m_pInstance == NULL) //判斷是否第一次調用
            m_pInstance = new CSingleton;
        return m_pInstance;
    }
        void RelaseInstance()
        {
            delete this;
        }
private:
        CSingleton() //構造函數是私有的
        {
        }
        CSingleton(const CSingleton& that)//拷貝構造函數也應是私有的
        {
        
        }
        ~CSingleton()
        {
            m_pInstance = NULL;
        }
        static CSingleton *m_pInstance;         
};

 

+(SingalClass*)shareInstance  //單例都使用+號,下面的都可以寫成宏調用
{
//利用GCD創建一個單例模式
//第一個參數predicate,該參數是檢查后面第二個參數所代表的代碼塊是否被調用的謂詞,第二個參數則是在整個應用程序中只會被調用一次的代碼塊。dispach_once函數中的代碼塊只會被執行一次,而且還是線程安全的。
static dispatch_once_t once;
dispatch_once(&once, ^{
single=[SingalClass alloc];
});
return single;
}

 Swfit更簡單了:

class SwiftySingleton {
static let shared = SwiftySingleton() // “懶實例化”的全局變量會被自動放在dispatch_once塊中[4] 
private init(){}
}

 

 

 

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM