     }
     
     /**
-     The method used to redistribute notification to the real observer. This method is marked `private` instead of `public` because the language limitation.
+     The method used to redistribute notification to the real observer. This method is marked `public` instead of `private` because the language limitation.
      
      - parameter notification: Received notification.
      */
     public func notificationReceived(notification: NSNotification) {
         let name = notification.name
         for info in selectorInfos where info.selector != nil {
-            #if DEBUG
-                // Note: When rnning test case, that instance won't be deallocated even if the holder object have been deallocated which work totally fine in a normal project.
-                // So in the debug mode, the observation will be removed if the oberser becom nil which will only happen in test case
-                if removeNilObserver(info) {
-                    return
-                }
-            #endif
-            
             if name == info.name && info.observer.respondsToSelector(info.selector!) {
                 info.observer.performSelector(info.selector!, withObject: notification)
             }

    // MARK: Initialization
    
    /**
    Create a notification handler instance using the observer. Observer is responded for hold that instance. Normally, you don't have to call this method manually.
    
    - parameter observer: The observer of the notification which will be weak referenced by that instance.
    
    - returns: An initialized instance
    */
    init (observer: NSObject) {
        self.observer = observer
    }
    

    public func observe(name: String?, object: NSObject? = nil, queue: NSOperationQueue? = nil, block: NotificationClosure) {
        let observer = DefaultCenter.addObserverForName(name, object: object, queue: queue, usingBlock: block)
        let info = NotificationInfo(observer: observer as! NSObject, name: name, object: object)

        lockWith {
            blockInfos.insert(info)
        }
    }
    
    // MARK: Observe with Selector
