             objc_setAssociatedObject(self, _loopTimeKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN);
         }
     }
-    
-    public var animationManager:JWAnimationManager{
-        get {
-            return (objc_getAssociatedObject(self, _animationManagerKey) as! JWAnimationManager)
+
+    public var animationManager:JWAnimationManager?{
+        get {
+            return (objc_getAssociatedObject(self, _animationManagerKey) as! JWAnimationManager?)
         }
         set {
             objc_setAssociatedObject(self, _animationManagerKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN);
         }
     }
-    
+
     private var haveCache:Bool{
         get {
             return (objc_getAssociatedObject(self, _haveCacheKey) as! Bool)

            objc_setAssociatedObject(self, _displayOrderIndexKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN);
        }
    }
    
    private var syncFactor:Int{
        get {
            return (objc_getAssociatedObject(self, _syncFactorKey) as! Int)

            objc_setAssociatedObject(self, _gifImageKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN);
        }
    }
    public var currentImage:UIImage{
        get {
            return (objc_getAssociatedObject(self, _currentImageKey) as! UIImage)
        }
