Swift 单例

注意: 被继承的类要避免是单例,否则子类通过单例的方式获取到的对象实际是父类的对象
案例: 
class  P:  NSObject {

    static let instance = P()
    func funcA() {
         funcB ( 1 )
    }
     func  funcB(i: Int ) ->  Bool ? {
       
  return  nil
    }
}
class  Human:  P {
   
  override  func  funcB(i:  Int ) ->  Bool ? {
       
  return  false
    }
}


错误: 
Human.instance.funcA   
原因: 子类通过单例的方式获取,实际是获取到父类的单例,在执行funcB时不会执行子类的funcB方法
正确:
let  h =  Human ()
h . funcA ()  


//

class Person{
   
   
  var  name:  String  =  " 无名氏 "
   
   
  private  static  let  person =  Person ()
   
   
  static  var  shareInstance: Person {
      
  return  person
    }
}

let  person =  Person .shareInstance
person . name




swift 1.2 及之后的推荐写法 page104image15072

class  MyManager   {
    static let  sharedInstance = MyManager()
    private init() { }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值