Xcode中的Buildtime issues和Runtimes issues指的是什么

165 阅读1分钟
  • Buildtime issues(见下图)有三类:编译器识别出来的警告(Waring),错误(Error),及静态分析(Static Code Analysis),前两者无需赘述,静态分析错误一般有三类,未初始化的变量,未使用的数据和API使用错误等,比如下面这段代码
class SampleViewController: UIViewController {
    override func viewDidLoad() {
        lrt numList: [Int]
        let otherNumList = numList
        let anthoerNumList: [Int]?
    }
}

截屏2022-05-14 下午10.46.39.png

这段代码中有三个错误。首先,numList未初始化就赋值给otherNumList, 其次,anotherNumList并未使用,最后,API使用错误,没有调用super.viewDidLoad()方法。

  • Runtimes issues有三类问题:线程问题,UI布局和渲染问题以及内存问题。线程的相关问题有很多,最常见的就是数据竞争(data race)。比如下面这段代码:
var balance = 0;
let fullTimeSalary = 1000, partTimeSalary = 1000
DispathQueue.global().async {
    for _ in 1...12{
        balance += partTimeSalary
    }
}

for _ in 1...12 {
    balance += fullTimeSalary
}

在这段代码中,两个线程同时对balance进行写操作,谁先写,balance值为多少酒会变成两个线程角力的问题。这种多个线程对同一个值进行写操作的行为就是数据竞争。

UI布局和渲染问题就是诸如尺寸设定没给全或者设定模糊,造成autolayout引擎无法渲染,内存问题常见的就是内存泄漏,比如循环引用就是一个典型的错误。