     private let observer: NSObject!
     private var blockInfos = Set<NotificationInfo>()
     private var selectorInfos = Set<NotificationInfo>()
+    private var lock = OS_SPINLOCK_INIT
     
     private var DefaultCenter: NSNotificationCenter {
         return NSNotificationCenter.defaultCenter()

        
        let info = NotificationInfo(observer: observer as! NSObject, name: notification, object: object)
        
        blockInfos.insert(info)
        
    }
    

            DefaultCenter.removeObserver(info.observer, name: info.name, object: info.object)
        }
        
        with {
            self.blockInfos.removeAll(keepCapacity: false)
        }
    }
    
    // MARK: Lock
    
    private func with(closure: Void -> Void) {
        OSSpinLockLock(&lock)
        closure()
        OSSpinLockUnlock(&lock)
    }
}

