Swift单例

继承NSObject单例

class CardUtil : NSObject{

    /*

     静态属性shared持有唯一的实例,对外公开

     */

    static let shared = CardUtil()


    /*

     重载init()方法,使其对外不可见,不可以在外部调用,防止在外部创建实例

     */

    private override init(){}


    /*

     重载copy(), mutableCopy()方法,返回self,防止在外部复制势例。

     */

    override func copy() -> Any{

        /*

         这里也可以返回CardUtil.shard。

         只有shared能调用copy() mutableCopy()方法,那么self就是shared

         */

        return self

    }


    override func mutableCopy() -> Any {

        return self

    }


}


2、不继承NSObject

class CardUtil2 {

    /*

     不继承NSobject的类,没有copy() mutalbeCopy()方法,不需要重载

     */

    static let shared = CardUtil2()


    private init(){}

}

你可能感兴趣的:(Swift单例)