You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by jo...@apache.org on 2018/11/21 07:53:37 UTC

[incubator-weex] branch revert-1786-fix-rc-0.20 created (now b79bb7c)

This is an automated email from the ASF dual-hosted git repository.

jondong pushed a change to branch revert-1786-fix-rc-0.20
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git.


      at b79bb7c  Revert "Fix rc 0.20"

This branch includes the following new commits:

     new b79bb7c  Revert "Fix rc 0.20"

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-weex] 01/01: Revert "Fix rc 0.20"

Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jondong pushed a commit to branch revert-1786-fix-rc-0.20
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git

commit b79bb7c47d1c19dd2f449f89008c46f70150c4cb
Author: Jonathan Dong <jo...@apache.org>
AuthorDate: Wed Nov 21 15:53:33 2018 +0800

    Revert "Fix rc 0.20"
---
 .../Sources/Component/WXCycleSliderComponent.mm    |  3 -
 .../Sources/Component/WXScrollerComponent.mm       |  2 +-
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h       | 30 +-------
 ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m       | 17 +----
 .../WeexSDK/Sources/Layout/WXComponent+Layout.h    | 72 +------------------
 .../WeexSDK/Sources/Layout/WXComponent+Layout.mm   | 80 ----------------------
 ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h  |  7 +-
 ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m  | 26 ++-----
 ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m      | 13 +++-
 ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m |  2 +-
 .../Utility/WXThreadSafeMutableDictionary.m        | 16 +----
 weex_core/Source/core/layout/flex_enum.h           |  8 +--
 weex_core/Source/core/layout/layout.h              |  2 +-
 weex_core/Source/core/render/page/render_page.cpp  |  8 ++-
 14 files changed, 35 insertions(+), 251 deletions(-)

diff --git a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
index ab26bc3..402e592 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXCycleSliderComponent.mm
@@ -73,9 +73,6 @@ typedef NS_ENUM(NSInteger, Direction) {
         _currentIndex = 0;
         _itemViews = [[NSMutableArray alloc] init];
         _scrollView = [[WXRecycleSliderScrollView alloc] init];
-        if (@available(iOS 11.0, *)) {
-            _scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-        }
         _scrollView.backgroundColor = [UIColor clearColor];
         _scrollView.delegate = self;
         _scrollView.showsHorizontalScrollIndicator = NO;
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
index a278202..dfe8824 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
+++ b/ios/sdk/WeexSDK/Sources/Component/WXScrollerComponent.mm
@@ -903,7 +903,7 @@ WX_EXPORT_METHOD(@selector(resetLoadmore))
     }
     if (!decelerate) {
         _isScrolling = NO;
-        [self performSelector:@selector(scrollViewDidEndDecelerating:) withObject:scrollView afterDelay:0.1];
+        [self performSelector:@selector(scrollViewDidEndDecelerating:) withObject:nil afterDelay:0.1];
     }
     
     NSHashTable *delegates = [_delegates copy];
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
index ac014a5..5e7b1e7 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.h
@@ -83,20 +83,6 @@
 + (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options;
 
 /**
- * @abstract Registers a component for a given name, options and js code
- *
- * @param name The service name to register
- *
- * @param options The service options to register
- *
- * @param serviceScript service js code to invoke
- *
- * @param completion Completion callback. JS is executed in asynchronously.
- *
- */
-+ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
-
-/**
  * @abstract Registers a component for a given name, options and js url
  *
  * @param name The service name to register
@@ -106,21 +92,7 @@
  * @param serviceScriptUrl The service url to register
  *
  */
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options;
-
-/**
- * @abstract Registers a component for a given name, options and js url
- *
- * @param name The service name to register
- *
- * @param options The service options to register
- *
- * @param serviceScriptUrl The service url to register
- *
- * @param completion Completion callback. JS is executed in asynchronously.
- *
- */
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl WithOptions:(NSDictionary *)options;
 
 /**
  * @abstract Registers a component for a given name, options and js code
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
index 26ca8b7..b5d7e00 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKEngine.m
@@ -166,25 +166,14 @@
 
 
 # pragma mark Service Register
-
 + (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options
 {
-    [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options completion:nil];
-}
-
-+ (void)registerService:(NSString *)name withScript:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
-{
-    [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options completion:completion];
-}
-
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options
-{
-    [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options completion:nil];
+    [[WXSDKManager bridgeMgr] registerService:name withService:serviceScript withOptions:options];
 }
 
-+ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
++ (void)registerService:(NSString *)name withScriptUrl:(NSURL *)serviceScriptUrl WithOptions:(NSDictionary *)options
 {
-    [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options completion:completion];
+    [[WXSDKManager bridgeMgr] registerService:name withServiceUrl:serviceScriptUrl withOptions:options];
 }
 
 + (void)unregisterService:(NSString *)name
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
index 7a7dc37..a338847 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.h
@@ -26,13 +26,6 @@
 #ifdef __cplusplus
 #include "layout.h"
 
-typedef WeexCore::WXCoreFlexDirection WXCoreFlexDirection;
-typedef WeexCore::WXCoreFlexWrap WXCoreFlexWrap;
-typedef WeexCore::WXCoreJustifyContent WXCoreJustifyContent;
-typedef WeexCore::WXCoreAlignItems WXCoreAlignItems;
-typedef WeexCore::WXCoreAlignSelf WXCoreAlignSelf;
-typedef WeexCore::WXCorePositionType WXCorePositionType;
-
 extern "C" {
 #endif
     bool flexIsUndefined(float value);
@@ -40,19 +33,6 @@ extern "C" {
 }
 #endif
 
-#ifndef __cplusplus
-// Ensure that .m files can use css style enum definitions.
-#include "flex_enum.h"
-
-typedef enum WXCoreFlexDirection WXCoreFlexDirection;
-typedef enum WXCoreFlexWrap WXCoreFlexWrap;
-typedef enum WXCoreJustifyContent WXCoreJustifyContent;
-typedef enum WXCoreAlignItems WXCoreAlignItems;
-typedef enum WXCoreAlignSelf WXCoreAlignSelf;
-typedef enum WXCorePositionType WXCorePositionType;
-
-#endif
-
 @interface WXComponent ()
 {
     @package
@@ -71,60 +51,10 @@ typedef enum WXCorePositionType WXCorePositionType;
  * @warning Subclasses must not override this.
  */
 #ifdef __cplusplus
-@property (nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
+@property(nonatomic, readonly, assign) WeexCore::WXCoreLayoutNode *flexCssNode;
 #endif
 
 /**
- * @abstract Get css style value for key. The key should be of CSS standard form.
- *  This method is for convenience use in C/ObjC environment. And if you want to
- *  retrieve all style values or in C++, you could use flexCssNode directly.
- *
- *  Thread usage:
- *      This method should be invoked in component thread by WXPerformBlockOnComponentThread.
- *      Note that all initWithRef methods of WXComponent and its subclasses are performed in
- *      component thread by default. Therefore you can call this method directly in initWithRef.
- *
- *  Supported keys:
- *      width, height, min-width, min-height, max-width, max-height,
- *      margin-(left/right/top/bottom)
- *      padding-(left/right/top/bottom)
- *      border-(left/right/top/bottom)-width
- *      left, right, top, bottom
- *      flex-grow
- */
-- (float)getCssStyleValueForKey:(NSString *)key;
-
-/**
- * @abstract Get css style flex-direction. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCoreFlexDirection)getCssStyleFlexDirection;
-
-/**
- * @abstract Get css style flex-wrap. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCoreFlexWrap)getCssStyleFlexWrap;
-
-/**
- * @abstract Get css style justify-content. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCoreJustifyContent)getCssStyleJustifyContent;
-
-/**
- * @abstract Get css style align-items. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCoreAlignItems)getCssStyleAlignItems;
-
-/**
- * @abstract Get css style align-self. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCoreAlignSelf)getCssStyleAlignSelf;
-
-/**
- * @abstract Get css style position. Thread usage the same as getCssStyleValueForKey.
- */
-- (WXCorePositionType)getCssStylePositionType;
-
-/**
  * @abstract Convert layout dimension value like 'left', 'width' to style value in js considering viewport and scale.
  */
 - (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName;
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
index 8afd225..18cb24d 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.mm
@@ -366,86 +366,6 @@ bool flexIsUndefined(float value) {
     return defaultValue;
 }
 
-- (float)getCssStyleValueForKey:(NSString *)key
-{
-    /*
-     *      width, height, min-width, min-height, max-width, max-height,
-     *      margin-(left/right/top/bottom)
-     *      padding-(left/right/top/bottom)
-     *      border-(left/right/top/bottom)-width
-     *      left, right, top, bottom
-     *      flex-grow
-     */
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    if (_flexCssNode == nullptr) {
-        return NAN;
-    }
-    
-    std::string ckey = [key UTF8String];
-    if (ckey == "width") return _flexCssNode->getStyleWidth();
-    if (ckey == "height") return _flexCssNode->getStyleHeight();
-    if (ckey == "min-width") return _flexCssNode->getMinWidth();
-    if (ckey == "min-height") return _flexCssNode->getMinHeight();
-    if (ckey == "max-width") return _flexCssNode->getMaxWidth();
-    if (ckey == "max-height") return _flexCssNode->getMaxHeight();
-    if (ckey == "margin-left") return _flexCssNode->getMarginLeft();
-    if (ckey == "margin-right") return _flexCssNode->getMarginRight();
-    if (ckey == "margin-top") return _flexCssNode->getMarginTop();
-    if (ckey == "margin-bottom") return _flexCssNode->getMarginBottom();
-    if (ckey == "padding-left") return _flexCssNode->getPaddingLeft();
-    if (ckey == "padding-right") return _flexCssNode->getPaddingRight();
-    if (ckey == "padding-top") return _flexCssNode->getPaddingTop();
-    if (ckey == "padding-bottom") return _flexCssNode->getPaddingBottom();
-    if (ckey == "border-left-width") return _flexCssNode->getBorderWidthLeft();
-    if (ckey == "border-right-width") return _flexCssNode->getBorderWidthRight();
-    if (ckey == "border-top-width") return _flexCssNode->getBorderWidthTop();
-    if (ckey == "border-bottom-width") return _flexCssNode->getBorderWidthBottom();
-    if (ckey == "left") return _flexCssNode->getStylePositionLeft();
-    if (ckey == "right") return _flexCssNode->getStylePositionRight();
-    if (ckey == "top") return _flexCssNode->getStylePositionTop();
-    if (ckey == "bottom") return _flexCssNode->getStylePositionBottom();
-    if (ckey == "flex-grow") return _flexCssNode->getFlex();
-    
-    WXAssert(NO, @"Invalid css style key %@", key);
-    return NAN;
-}
-
-- (WXCoreFlexDirection)getCssStyleFlexDirection
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getFlexDirection() : kFlexDirectionColumn;
-}
-
-- (WXCoreFlexWrap)getCssStyleFlexWrap
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getFlexWrap() : kNoWrap;
-}
-
-- (WXCoreJustifyContent)getCssStyleJustifyContent
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getJustifyContent() : kJustifyFlexStart;
-}
-
-- (WXCoreAlignItems)getCssStyleAlignItems
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getAlignItems() : kAlignItemsStretch;
-}
-
-- (WXCoreAlignSelf)getCssStyleAlignSelf
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getAlignSelf() : kAlignSelfAuto;
-}
-
-- (WXCorePositionType)getCssStylePositionType
-{
-    WXAssert(_flexCssNode != nullptr, @"Css node is null.");
-    return _flexCssNode ? _flexCssNode->getStylePositionType() : kRelative;
-}
-
 - (NSString*)convertLayoutValueToStyleValue:(NSString*)valueName
 {
     if (_flexCssNode == nullptr) {
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
index 8728161..3d06277 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.h
@@ -102,9 +102,8 @@ extern void WXPerformBlockOnBridgeThread(void (^block)(void));
  *  @param name      :   service name
  *  @param serviceScript    :   script code
  *  @param options   :   service options
- *  @param completion : completion callback
  **/
-- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
+- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options;
 
 
 /**
@@ -112,9 +111,9 @@ extern void WXPerformBlockOnBridgeThread(void (^block)(void));
  *  @param name         :   service name
  *  @param serviceScriptUrl    :   script url
  *  @param options      :   service options
- *  @param completion : completion callback
  **/
--(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion;
+
+-(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options;
 
 /**
  *  Unregister JS service Script
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
index f5c7a47..a0e8e4e 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
@@ -288,41 +288,28 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
     return value;
 }
 
-- (void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
+-(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary *)options
 {
-    if (!name || !serviceScriptUrl || !options) {
-        if (completion) {
-            completion(NO);
-        }
-        return;
-    }
+    if (!name || !serviceScriptUrl || !options) return;
     __weak typeof(self) weakSelf = self;
     WXResourceRequest *request = [WXResourceRequest requestWithURL:serviceScriptUrl resourceType:WXResourceTypeServiceBundle referrer:@"" cachePolicy:NSURLRequestUseProtocolCachePolicy];
     WXResourceLoader *serviceBundleLoader = [[WXResourceLoader alloc] initWithRequest:request];;
     serviceBundleLoader.onFinished = ^(WXResourceResponse *response, NSData *data) {
         __strong typeof(weakSelf) strongSelf = weakSelf;
         NSString *jsServiceString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
-        [strongSelf registerService:name withService:jsServiceString withOptions:options completion:completion];
+        [strongSelf registerService:name withService:jsServiceString withOptions:options];
     };
     
     serviceBundleLoader.onFailed = ^(NSError *loadError) {
         WXLogError(@"No script URL found");
-        if (completion) {
-            completion(NO);
-        }
     };
     
     [serviceBundleLoader start];
 }
 
-- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options completion:(void(^)(BOOL result))completion
+- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary *)options
 {
-    if (!name || !serviceScript || !options) {
-        if (completion) {
-            completion(NO);
-        }
-        return;
-    }
+    if (!name || !serviceScript || !options) return;
     
     NSString *script = [WXServiceFactory registerServiceScript:name withRawScript:serviceScript withOptions:options];
     
@@ -331,9 +318,6 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
         // save it when execute
         [WXDebugTool cacheJsService:name withScript:serviceScript withOptions:options];
         [weakSelf.bridgeCtx executeJsService:script withName:name];
-        if (completion) {
-            completion(YES);
-        }
     });
 }
 
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index 613abd5..87bc326 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -78,6 +78,7 @@ typedef enum : NSUInteger {
     BOOL _debugJS;
     id<WXBridgeProtocol> _instanceJavaScriptContext; // sandbox javaScript context    
     CGFloat _defaultPixelScaleFactor;
+    BOOL _bReleaseInstanceInMainThread;
     BOOL _defaultDataRender;
 }
 
@@ -117,6 +118,7 @@ typedef enum : NSUInteger {
         _apmInstance = [[WXApmForInstance alloc] init];
         
         _defaultPixelScaleFactor = CGFLOAT_MIN;
+        _bReleaseInstanceInMainThread = YES;
         _defaultDataRender = NO;
         
         [self addObservers];
@@ -441,6 +443,9 @@ typedef enum : NSUInteger {
         
         BOOL useJSCApiForCreateInstance = [[configCenter configForKey:@"iOS_weex_ext_config.useJSCApiForCreateInstance" defaultValue:@(YES) isDefault:NULL] boolValue];
         [WXUtility setUseJSCApiForCreateInstance:useJSCApiForCreateInstance];
+		
+        //Reading config from orange for Release instance in Main Thread or not
+        _bReleaseInstanceInMainThread = [[configCenter configForKey:@"iOS_weex_ext_config.releaseInstanceInMainThread" defaultValue:@(YES) isDefault:nil] boolValue];
 
         BOOL shoudMultiContext = NO;
         shoudMultiContext = [[configCenter configForKey:@"iOS_weex_ext_config.createInstanceUsingMutliContext" defaultValue:@(YES) isDefault:NULL] boolValue];
@@ -654,9 +659,13 @@ typedef enum : NSUInteger {
         [WXCoreBridge closePage:instanceId];
         
         // Reading config from orange for Release instance in Main Thread or not, for Bug #15172691 +{
-        dispatch_async(dispatch_get_main_queue(), ^{
+        if (!_bReleaseInstanceInMainThread) {
             [WXSDKManager removeInstanceforID:instanceId];
-        });
+        } else {
+            dispatch_async(dispatch_get_main_queue(), ^{
+                [WXSDKManager removeInstanceforID:instanceId];
+            });
+        }
         //+}
     });
     
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
index 75b09d8..70a8feb 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXAnimationModule.m
@@ -123,7 +123,7 @@
         _animationInfo.target.view.layer.anchorPoint = _animationInfo.originAnchorPoint;
         _animationInfo.target.view.layer.frame = originFrame;
     }
-    [_animationInfo.target.layer removeAnimationForKey:_animationInfo.propertyName];
+    [_animationInfo.target.layer removeAllAnimations];
     
     if (_finishBlock) {
         _finishBlock(flag);
diff --git a/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m b/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
index 6f31fb9..3c32292 100644
--- a/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
+++ b/ios/sdk/WeexSDK/Sources/Utility/WXThreadSafeMutableDictionary.m
@@ -145,30 +145,24 @@
 
 - (void)setObject:(id)anObject forKey:(id<NSCopying>)aKey
 {
-    id originalObject = nil; // make sure that object is not released in lock
     @try {
         pthread_mutex_lock(&_safeThreadDictionaryMutex);
-        originalObject = [_dict objectForKey:aKey];
         [_dict setObject:anObject forKey:aKey];
     }
     @finally {
         pthread_mutex_unlock(&_safeThreadDictionaryMutex);
     }
-    originalObject = nil;
 }
 
 - (void)setObject:(id)anObject forKeyedSubscript:(id <NSCopying>)key
 {
-    id originalObject = nil; // make sure that object is not released in lock
     @try {
         pthread_mutex_lock(&_safeThreadDictionaryMutex);
-        originalObject = [_dict objectForKey:key];
         [_dict setObject:anObject forKeyedSubscript:key];
     }
     @finally {
         pthread_mutex_unlock(&_safeThreadDictionaryMutex);
     }
-    originalObject = nil;
 }
 
 - (NSArray *)allKeys
@@ -195,32 +189,24 @@
 
 - (void)removeObjectForKey:(id)aKey
 {
-    id originalObject = nil; // make sure that object is not released in lock
     @try {
         pthread_mutex_lock(&_safeThreadDictionaryMutex);
-        originalObject = [_dict objectForKey:aKey];
-        if (originalObject) {
-            [_dict removeObjectForKey:aKey];
-        }
+        [_dict removeObjectForKey:aKey];
     }
     @finally {
         pthread_mutex_unlock(&_safeThreadDictionaryMutex);
     }
-    originalObject = nil;
 }
 
 - (void)removeAllObjects
 {
-    NSArray* allValues = nil; // make sure that objects are not released in lock
     @try {
         pthread_mutex_lock(&_safeThreadDictionaryMutex);
-        allValues = [_dict allValues];
         [_dict removeAllObjects];
     }
     @finally {
         pthread_mutex_unlock(&_safeThreadDictionaryMutex);
     }
-    allValues = nil;
 }
 
 - (id)copy
diff --git a/weex_core/Source/core/layout/flex_enum.h b/weex_core/Source/core/layout/flex_enum.h
index 7e439b2..9eb3676 100644
--- a/weex_core/Source/core/layout/flex_enum.h
+++ b/weex_core/Source/core/layout/flex_enum.h
@@ -16,14 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+#ifdef __cplusplus
 
 #ifndef WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
 #define WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
 
-/* These enum definitions may also be used by C files. */
-#ifdef __cplusplus
 namespace WeexCore {
-#endif
 
   /**
    * MainAxis direction
@@ -122,8 +120,6 @@ namespace WeexCore {
     kLeft,
   };
 
-#ifdef __cplusplus
 }
-#endif
-
 #endif //WEEXCORE_FLEXLAYOUT_WXCOREFLEXENUM_H
+#endif
\ No newline at end of file
diff --git a/weex_core/Source/core/layout/layout.h b/weex_core/Source/core/layout/layout.h
index 4b8f0c5..0d62edd 100644
--- a/weex_core/Source/core/layout/layout.h
+++ b/weex_core/Source/core/layout/layout.h
@@ -836,7 +836,7 @@ namespace WeexCore {
       }
     }
 
-    inline WXCorePositionType getStylePositionType() const {
+    inline WXCorePositionType getStypePositionType() const {
       return mCssStyle->mPositionType;
     }
 
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index 119af87..032a0d7 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -628,11 +628,13 @@ void RenderPage::Batch() {
   if ((kUseVSync && this->need_layout_.load()) || !kUseVSync) {
     LayoutInner();
   }
+  else {
 #if OS_IOS
-  // vsync may stopped, trigger once
-  RenderAction *action = new RenderActionTriggerVSync(page_id());
-  PostRenderAction(action);
+    // vsync may stopped, trigger once
+    RenderAction *action = new RenderActionTriggerVSync(page_id());
+    PostRenderAction(action);
 #endif
+  }
 }
 
 RenderObject *RenderPage::GetRenderObject(const std::string &ref) {