美文网首页
OpenUDID内存泄漏

OpenUDID内存泄漏

作者: 002and001 | 来源:发表于2018-09-21 20:01 被阅读143次

通过Pod导入OpenUDID,在使用的时候同instrument的leak发现内存泄漏问题。
我们的Pod文件中

pod 'OpenUDID','~> 1.0'

通过排查和网上搜索(OpenUDID的issue里面有提及这个问题)最终定位在了OpenUDID.m文件中的

  • (NSString*) valueWithError:(NSError **)error {
    ....
    if(appUID == nil)
    {
    // generate a new uuid and store it in user defaults
    CFUUIDRef uuid = CFUUIDCreate(NULL);
    appUID = (NSString *) CFUUIDCreateString(NULL, uuid);
    CFRelease(uuid);
    ....
    }
    处,于是自己fork了一个分支查看发现如下


    image.png

    1.0版本并不是最新代码,查看对应的commit,发现截图中的2个commit做了修改,fix了内存泄漏相关问题


    image.png 。

测试步骤:

修改OpenUDID.m文件,
把整个文件内容替换为分支上的最新commit的内容,这个时候先不要profile,删除App后clean一下,run一次后profile,再使用leak检查,这个时候OpenUDID不存在内存泄漏了。

解决办法:

还是希望通过Pod来管理第三方,
于是自己从OpenUDID fork出自己的仓库,添加podspec文件和LICENSE文件,push后打上对应的tag,然后关联pod上传到https://cocoapods.org/pods/,最后修改自己的项目引用自己关联的pod项目。
FHHOpenUDID.podspec

Pod::Spec.new do |s|

  s.name         = "FHHOpenUDID"
  s.version      = "1.0.1"
  s.summary      = "FHHOpenUDID"
  s.homepage     = "https://github.com/002and001/OpenUDID"
  s.license      = "MIT"
  s.author       = { "002and001" => "xxewz1@163.com" }
  s.source       = { :git => "https://github.com/002and001/OpenUDID.git", :tag => "#{s.version}" }
  s.module_name = 'OpenUDID'
  s.ios.deployment_target = '8.0'
  s.frameworks   = "Foundation", "UIKit"
  s.source_files  = "*.{h,m}"
  s.requires_arc = false

end

最后修改pod文件:

pod 'FHHOpenUDID','~> 1.0'

关联pod

相关文章

网友评论

      本文标题:OpenUDID内存泄漏

      本文链接:https://www.haomeiwen.com/subject/ntkznftx.html