【iOS】包大小和性能稳定性优化

包大小优化

  1. 图片

    1. LSUnusedResources 扫描重复的图片

    2. ImageOptim,压缩图片

  2. 压缩文件

    1. 优化音视频资源 ,使用MP3 代替 WAV

      ffmpeg -i input.mp3 -b:a 128k output.mp3

    2. 视频 H.265(HEVC) 代替 H.264 ffmpeg

      ffmpeg -i input.mp4 -vcodec libx264 -crf 28 -preset fast -acodec aac -b:a 128k output.mp4

    3. 优化 JSON / XML / Plist 压缩,去掉空格,减少 Key 长度

      jq -c . input.json > output.json

      xmllint --format input.xml | tr -d '\n' > output.xml

      plutil -convert binary1 input.plist -o output.plist

  3. Enable Bitcode 能打开就打开

  4. 代码优化,infer代码走查并优化

  5. Swift Package Manager 代替cocoapods

  6. 使用 WKWebView 代替 UIWebView,WKWebView 体积更小,性能更优

ios性能和稳定性优化

  1. 内存管理优化(使用 weak 和 unowned:特别是在闭包和委托中,确保避免循环引用。weak 引用会在对象被销毁时自动设为 nil,unowned 引用则不会。)

    class MyClass {
    var closure: (() -> Void)?
    func setupClosure() {
    closure = { [weak self] in
    self?.doSomething()
    }
    }
    }

  2. 大图片压缩

    func compressImage(_ image: UIImage) -> UIImage? {
    let imageData = image.jpegData(compressionQuality: 0.5)
    return UIImage(data: imageData!)
    }

  3. 避免主线程阻塞

    DispatchQueue.global(qos: .background).async {
    // 执行后台任务
    let result = fetchData()
    DispatchQueue.main.async {
    // 更新 UI
    self.updateUI(with: result)
    }
    }

  4. UI 渲染与布局优化

    1. 减少视图层次

    2. 避免过度绘制

    3. 使用异步渲染

      UIView.animate(withDuration: 0.3, animations: {
      self.view.alpha = 0.5
      })

  5. 网络请求优化

    1. 使用缓存机制

    2. 压缩和优化网络数据 zip

    3. 懒加载和分页加载

      func loadMoreData(page: Int) {
      let url = URL(string: "https://example.com/api/data?page=\(page)")!
      URLSession.shared.dataTask(with: url) { data, response, error in
      if let data = data {
      DispatchQueue.main.async {
      self.updateUI(with: data)
      }
      }
      }.resume()
      }

  6. 应用启动优化

    1. 延迟加载非关键资源

      func applicationDidFinishLaunching(_ application: UIApplication) {
      loadEssentialResources()
      DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
      self.loadNonEssentialResources()
      }
      }

  7. 后台任务优化

    复制代码
    func beginBackgroundTask() {
       let taskID = UIApplication.shared.beginBackgroundTask {
          // 任务完成后的清理代码
       }
       // 执行后台任务
    }
  8. 避免频繁更新定位信息,限制定位更新的频率和精度,避免过度消耗电池。

    复制代码
    _manager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
  9. 电池优化,低功耗模式适配

    if ProcessInfo.processInfo.isLowPowerModeEnabled {
    // 优化应用,减少后台任务或禁用某些功能
    }

相关推荐
2501_915909063 小时前
不用越狱就看不到 iOS App 内部文件?使用 Keymob 查看和导出应用数据目录
android·ios·小程序·https·uni-app·iphone·webview
@大迁世界4 小时前
液态玻璃屏正在侵蚀你的电池
macos·ios·objective-c·cocoa
pop_xiaoli5 小时前
【iOS】类与对象底层
macos·ios·objective-c·cocoa·xcode
sp42a5 小时前
NativeScript iOS 平台开发技巧
ios·nativescript·app 开发
2501_915921436 小时前
常用iOS性能测试工具大全及使用指南
android·测试工具·ios·小程序·uni-app·cocoa·iphone
for_ever_love__6 小时前
Objecgtive-C学习实例对象,类对象, 元类对象与 isa指针
c语言·学习·ios
一招定胜负7 小时前
视频转写+LLM分析:课堂录音自动化处理实现
macos·ios·xcode
2501_915918417 小时前
有没有Xcode 替代方案?在快蝎 IDE 中完成 iOS 开发的过程
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
blackorbird7 小时前
通过攻陷合法网站传播的新型iOS漏洞利用工具包DarkSword
macos·ios·objective-c·cocoa
for_ever_love__10 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c