 // Internal Proxy To Manage Converting The Objc Delegate
 internal class DelegateProxy: NSObject, RBQFetchedResultsControllerDelegate {
     
-    internal let delegate: DelegateProxyProtocol
+    weak internal var delegate: DelegateProxyProtocol?
     
     init(delegate: DelegateProxyProtocol) {
         self.delegate = delegate

/**
Delegate to pass along the changes identified by the FetchedResultsController.
*/
public protocol FetchedResultsControllerDelegate {
    
    /**
    Indicates that the controller has started identifying changes.

    
    // <RBQFetchedResultsControllerDelegate>
    @objc func controllerWillChangeContent(controller: RBQFetchedResultsController) {
        self.delegate?.controllerWillChangeContent(controller)
    }
    
    @objc func controller(controller: RBQFetchedResultsController, didChangeObject anObject: RBQSafeRealmObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
        
        self.delegate?.controller(controller, didChangeObject: anObject, atIndexPath: indexPath, forChangeType: type, newIndexPath: newIndexPath)
    }
    
    @objc func controller(controller: RBQFetchedResultsController, didChangeSection section: RBQFetchedResultsSectionInfo, atIndex sectionIndex: UInt, forChangeType type: NSFetchedResultsChangeType) {
        
        self.delegate?.controller(controller, didChangeSection: section, atIndex: sectionIndex, forChangeType: type)
    }
    
    @objc func controllerDidChangeContent(controller: RBQFetchedResultsController) {
        self.delegate?.controllerDidChangeContent(controller)
    }
}