登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

Swift 减少指令数量的编码 Tips

时间:2026-08-20 23:43:31 368浏览 收藏

从整体上看,Swfit生成的指令数量要多于OC。所以,在这里为大家梳理了一些Tips,在编码的时候多留意一下,或许就能减少一点点指令数量。虽然这可能只是微不足道的“蚊子腿”,但总归也是肉嘛。

Swift 减少指令数量的编码 Tips

避免 Swift 去重写 OC 的构造函数

  • 会新增 objc_msgSendSuper2 调用父类函数指令;
  • 影响该函数的内联,在调用次数少时能减少很多指令;
  • Swift 调用 super 若是父类显式定义的,还会新增不少隐式强制转换指令,详情可看:juejin.cn/post/743075…

多用临时变量,减少高成本调用

临时变量若直接通过寄存器实现读写,在许多场景下都能减少指令。 例如,能减少函数调用的次数,也能减少对实例属性的访问次数:

value?.doA()
let a = value?.getB()
let b = value?.getB()
->
guard let value = value else { return }
value.doA()
let a = value.getB()
let b = a

减少 lazy 属性使用

lazy 属性有锁操作且需要额外地址存储实际数据,在频次不敏感场景可以使用计算属性替代。

闭包减少外部变量引用

比如使用静态属性取代实例属性:

do () { self.key }
->
do () { AnyClass.key }

使用字面量方式初始化容器

        var dic = [String : Any]()
        dic["fileId"] = fileElementId
-> 
        ["fileId": fileElementId]

使用字符串插值替代字符串连接

let _ = a + b
->
let _ = “(a)(b)”

减少分支

If (a 3) { return true } else { return false }
->
return a 3
return "iPhone9,2" == result || "iPhone9,4" == result || "iPhone10,2" == result || "iPhone10,5" == result
->
return ["iPhone9,2", "iPhone9,4", "iPhone10,2", "iPhone10,5"].contains(result)
ps
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>