cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-8863) Fix potential problems with blocks usage in core plugins
Date Fri, 20 Nov 2015 00:23:11 GMT

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

ASF GitHub Bot commented on CB-8863:
------------------------------------

GitHub user purplecabbage opened a pull request:

    https://github.com/apache/cordova-plugin-media-capture/pull/49

    CB-8863 Fix block usage of self

    

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

    $ git pull https://github.com/purplecabbage/cordova-plugin-media-capture CB-8863

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

    https://github.com/apache/cordova-plugin-media-capture/pull/49.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 #49
    
----
commit d19ce1a3fe5302a92a66c9d7d4e4c68f5c759534
Author: Jesse MacFadyen <purplecabbage@gmail.com>
Date:   2015-11-20T00:22:30Z

    CB-8863 Fix block usage of self

----


> Fix potential problems with blocks usage in core plugins
> --------------------------------------------------------
>
>                 Key: CB-8863
>                 URL: https://issues.apache.org/jira/browse/CB-8863
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>            Reporter: Shazron Abdullah
>            Assignee: Jesse MacFadyen
>              Labels: cordova-ios-5.0.x
>
> Audit the core plugins to check for proper blocks usage.
> Problems that I see can be summed up in this (fixed) code:
> https://github.com/apache/cordova-plugin-splashscreen/blob/fa60f01adcba2d21583de7972a0facc4da1eb75e/src/ios/CDVSplashScreen.m#L292-L313
> 1. You need a weak reference to "self" in blocks to prevent retain cycle problems.
> Fix: https://github.com/apache/cordova-plugin-splashscreen/blob/fa60f01adcba2d21583de7972a0facc4da1eb75e/src/ios/CDVSplashScreen.m#L292
> 2. Anything that calls UIKit methods, which includes plugins that write JavaScript back
to the UIWebView (commandDelegate functions), must be called in the main thread.
> Fix: https://github.com/apache/cordova-plugin-splashscreen/blob/fa60f01adcba2d21583de7972a0facc4da1eb75e/src/ios/CDVSplashScreen.m#L308-L310
(UPDATE: we actually already handle this in evalJS)
> 3. Avoid creating private variables like this in the first place -- I would create a
class extension which will effectively have "private" properties (nothing is truly private
in objc). This is to avoid this situation in the block where you have to cast the weak self
into a strong self (and check it's still around), just to access a private variable:
> https://github.com/apache/cordova-plugin-splashscreen/blob/fa60f01adcba2d21583de7972a0facc4da1eb75e/src/ios/CDVSplashScreen.m#L298-L304
> Of course since we are modifying UIKit items here, rule 2 above also applies.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message