Sch*_*eck 7 camera memory-leaks objective-c ios 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];
Run Code Online (Sandbox Code Playgroud)
但即使停止刷新和相机,即使CPU使用率降低,内存也永远不会释放.
为了有希望激励某人查看代码,我在这里准备了一个简单且易于使用的Ionic项目:https: //github.com/Moonware/cordova-cameraplus-testapp
抓住这个正常之后,你只需要做到:
cordova platform add ios (or android)
ionic build ios (or android)
Run Code Online (Sandbox Code Playgroud)
也许有更好的方法.无论如何欢迎建议:)
我已经意识到(当然在创建了我自己之后)我不是第一个有这个想法的人,但是看看现有的变体并没有帮助我解决这个问题.
我试过的那些显然有类似的记忆问题.
提前致谢.