  - returns: true switch theme will happen, or false ignore switch theme
  */
 public typealias SwitchThemeBlock = ((_ now: Any, _ pre: Any?) -> Void)
+
 open class CHObjectWrapper<T> {
     var value :T?
     init(value:T?) {

    /// internal data used theme switch
    var data:ThemeSwitchData? {get set}
    
    /// interal config for theme switch
    var conf:ThemeSwitchInternalConf {get set}
    
    /// switch block
    var refreshBlock:SwitchThemeBlock? {get set}
    

    func ch_awakeFromNib() {
        ch_awakeFromNib()
        if ThemeServiceConfig.shared.autoViewAwakeFromNib {
            ch.workerWrapper(data: ThemeSwitchDataCenter.shared.switchData, option: .self)
        }
    }
    
    func ch_didMoveToWindow() {
        ch_didMoveToWindow()
        if let _ = window , ThemeServiceConfig.shared.autoViewDidMoveToWindow {
            ch.workerWrapper(data: ThemeSwitchDataCenter.shared.switchData, option: .self)
        }
    }
}
