Cordova Custom Camera Plugin - iOS内存泄漏

时间:2015-02-27 18:30:31

标签: ios objective-c memory-leaks camera cordova-plugins

我正在为iOS和Android编写自定义相机插件,因为默认设置不提供我需要的功能。

我想要实现的是在后台从相机检索图像而不显示预览屏幕/窗口,以便可以从Javascript请求它们并直接在HTML中使用或通过HTTP POST在Base64中发布。 (还有一些尚未准备好的事情:))

我实际上已经管理过了,我在这里上传了我的插件: https://github.com/Moonware/cordova-cameraplus

Android上的功能正如预期的那样,但我在iOS上遇到了问题(可能是内存泄漏)。

它工作3-4分钟,内存不断增加,突然停止刷新(应用程序仍处于活动状态,Camera对象也是如此)。

由于ARC已启用,因此我无法自行手动释放/处置某些对象。我试图用@autoreleasepool {}包装一些看起来具有战略意义的地方,内存使用情况略好一些,但问题仍然存在。

我想知道是否有一位Objective C专家可以查看我的插件,并且可能提供一些建议来解决这个问题,或者至少找到它的来源。

我觉得这是每隔50-100ms调用插件来检索占用内存并且不释放它的图像的事实(返回的字符串介于8kb和2Mb之间,具体取决于相机的分辨率) :

CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:base64String];

[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

但即使停止刷新和相机,即使CPU使用率降低,内存也永远不会释放。

为了有希望激励某人查看代码,我在这里准备了一个简单且易于使用的Ionic项目: https://github.com/Moonware/cordova-cameraplus-testapp

正常抓住这个之后,你只需要做到这一点:

cordova platform add ios (or android)
ionic build ios (or android)

也许有更好的方法。无论如何,欢迎提出建议:)

我已经意识到(当然是在创建了我自己之后)我不是第一个有这个想法的人,但是看看现有的变体并没有帮助我解决这个问题。

我试过的那些显然有类似的记忆问题。

提前致谢。

0 个答案:

没有答案