[ 
https://issues.apache.org/jira/browse/WEEX-96?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16242485#comment-16242485
 ] 

ASF GitHub Bot commented on WEEX-96:
------------------------------------

GitHub user acton393 opened a pull request:

    https://github.com/apache/incubator-weex/pull/839

    [WEEX-96][iOS] bug-fix about timer exposed on JSContext

    
      In most case , element in cell will be re-use for memory especially in 
very
    long list, but if add event for this element, here will generate a new view 
for
    this element,if it's nil due to a  getter method whether it is off-screen.
    
      For instance, image element in cell will re-use if it is disappear in 
vision area,
    loaded again while it back to visual area. In this case , when it 
disappear, just
    add event such as click, touch and so on , it will then create a new view,
    and load image again, although it is off-screen.
    
      If the view is not loaded, so won't add gesture or call this view getter 
to create
    any view until the view is loaded, then it will init events according to 
record in
    component.
    
    Bug: 98


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/acton393/incubator-weex 
ios-bugfix-timer-exposed-in-JSContext

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-weex/pull/839.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #839
    
----
commit 45c6c7e6510565030bd8196e194ee0dc542c3f08
Author: acton393 <[email protected]>
Date:   2017-11-07T15:07:30Z

    [WEEX-96][iOS] bug-fix about timer exposed on JSContext
    
      Timer exposed on the JSContext, so user can access the function,
    though JavaScript, it has setTimeout and setInterval functions, those
    function switch to global queue while execute javaScript code, it may
    have potential crash about thread safe problem, and for setInterval
    function, the timeId can not auto-increment, so it is hard to clear it at
    the end of program.
      Overview the code, the difference between timer module and the
    JSConext timer is  the execution path is more shorter, the JSContext
    timer can execute javascript function immediately, but the timer module
    instruction must be dispatched by weex sdk just like the common modules,
    the JSContext can be used in canvas scene.
    
    Bug: 96

----


> Timer exposed on JSContext can not clear and it has potential crash switching 
> globalQueue
> -----------------------------------------------------------------------------------------
>
>                 Key: WEEX-96
>                 URL: https://issues.apache.org/jira/browse/WEEX-96
>             Project: Weex
>          Issue Type: Bug
>            Reporter: xingZhang
>            Assignee: Adam Feng
>            Priority: Critical
>
> 1. timer can not be clear
>     As the WXJSCoreBridge file  in [line 
> 544](https://github.com/apache/incubator-weex/blob/master/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m#L544)
>   shows the code, the appId is a string , so it will never be cleared.
> 2. timer execute js function in global queue may have potential crash, it had 
> better execution in current thread.
>     WXJSCoreBridge  
> https://github.com/apache/incubator-weex/blob/master/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m#L535
> 3. timerId will always be 1, not auto-increment as the count of timer 
> increasing
> https://github.com/apache/incubator-weex/blob/master/ios/sdk/WeexSDK/Sources/Bridge/WXJSCoreBridge.m#L513



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to