[ 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 <purplecabb...@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-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org