      Periodically, the consistency manager cleans up after itself.
      This is a relatively quick process, and since the memory footprint of the library in general is small, it's not an important thing to worry about.
      Default is 5 mins. It will also clean up automatically on any memory warnings.
+
+     If you set this to zero, then garbage collection is considered disabled.
+     The ConsistencyManager will still attempt to clean up memory if the application receives a memory warning.
+
+     This variable is not thread-safe. You should only access this on the main thread.
      */
     public var garbageCollectionInterval: NSTimeInterval = 300
 

     */
    public init() {
        memoryWarningListener.delegate = self
        startGarbageCollection()
    }

    // MARK: - Public Functions

     It is called once on initialization to start the process. This will cause a cleanMemory call, but that's ok since it will be basically a no-op.
     */
    private func startGarbageCollection() {
        // Saving a local variable so we only access this on the main thread
        let garbageCollectionInterval = self.garbageCollectionInterval
        // If garbageCollectionInterval is 0, this means it's disabled.
        if garbageCollectionInterval > 0 {
            // Weak here is necessary, otherwise, we'd have a retain cycle.
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(UInt64(garbageCollectionInterval) * NSEC_PER_SEC)), dispatchQueue) { [weak self] in
                self?.cleanMemory()
                dispatch_async(dispatch_get_main_queue()) {
                    self?.startGarbageCollection()
                }
            }
        }
    }

