     /// The block is executed when user pressed the select button.
     @objc public var didSelectAssets: ((_ assets: [DKAsset]) -> Void)?
     
+    /// The block is executed when the number of the selected assets is changed.
     @objc public var selectedChanged: (() -> Void)?
     
+    /// A Bool value indicating whether to allow the picker auto-export the seelcted assets to specified directory when done is called.
+    /// picker will creating a default exporter if exportsWhenCompleted is true and the exporter is nil.
     @objc public var exportsWhenCompleted = false
     
     @objc public var exporter: DKImageAssetExporter?
     
+    /// Indicates the status of the exporter.
     @objc public private(set) var exportStatus = DKImagePickerControllerExportStatus.none {
+        willSet {
+            self.willChangeValue(forKey: #keyPath(DKImagePickerController.exportStatus))
+        }
+        
         didSet {
+            self.didChangeValue(forKey: #keyPath(DKImagePickerController.exportStatus))
+            
             self.exportStatusChanged?(self.exportStatus)
         }
     }
     
+    /// The block is executed when the exportStatus is changed.
     @objc public var exportStatusChanged: ((DKImagePickerControllerExportStatus) -> Void)?
     
+    /// The object that acts as the data source of the picker.
     @objc public private(set) lazy var groupDataManager: DKImageGroupDataManager = {
         let configuration = DKImageGroupDataManagerConfiguration()
         configuration.assetFetchOptions = self.createDefaultAssetFetchOptions()

    /// If sourceType is Camera will cause the assetType & maxSelectableCount & allowMultipleTypes & defaultSelectedAssets to be ignored.
    @objc public var sourceType: DKImagePickerControllerSourceType = .both
    
    /// Whether allows to select photos and videos at the same time.
    @objc public var allowMultipleTypes = true
    
    /// Determines whether or not the rotation is enabled.
    @objc public var allowsLandscape = false
    
    /// Set the showsEmptyAlbums to specify whether or not the empty albums is shown in the picker.
    @objc public var showsEmptyAlbums = true
    
    @objc public var showsCancelButton = false
    
    /// The block is executed when user pressed the cancel button.

    /// Allow swipe to select images.
    @objc public var allowSwipeToSelect: Bool = false
    
    /// A Bool value indicating whether the inline mode is enabled.
    @objc public var inline: Bool = false
    
    /// The type of picker interface to be displayed by the controller.
