1
私は最近、ビルドタイムアナライザ:https://github.com/RobertGummesson/BuildTimeAnalyzer-for-Xcodeを使用してSwiftプロジェクトのコンパイル時間を分析し始めました。私は特に、この方法は、コンパイルすることは非常に緩慢であることに気づいた:Swiftコードのブロックが他のブロックよりずっと遅くコンパイルされる原因は何ですか?
func placeStatusSwitch() {
let switchX = tableView.center.x - (statusSwitch.frame.width/2)
var switchY = tableView.contentInset.top - statusSwitch.frame.height + tableView.contentOffset.y
if let refreshControl = refreshControl {
let navigationBarHeight = navigationController?.navigationBar.frame.height ?? 0
let expectedTopInset = UIApplication.shared.statusBarFrame.height + navigationBarHeight + statusSwitch.frame.height + MyTheme.verticalMargin - 4
if tableView.contentInset.top >= expectedTopInset || refreshControl.isRefreshing {
switchY = switchY - refreshControl.frame.height
}
}
statusSwitch.frame = CGRect(x: switchX, y: switchY, width: statusSwitch.frame.width, height: statusSwitch.frame.height)
}
は、私が代わりに使用して無記号合体演算子を変更してみました:
var navigationBarHeight: CGFloat = 0
if let navBarHeight = navigationController?.navigationBar.frame.height {
navigationBarHeight = navBarHeight
}
をコンパイル時にはまだ遅いですが。どのようなアイデアが減速の原因になっているのでしょうか?
あなたはgcdとfamilierでなければなりません。この実行では、プロセスをバックグラウンドで遅くします。実行中に現在のプロセスで管理することができます。それはスレッド管理に関するものです。 – JAck
Scientific Wild-Ass Guess(SWAG):算術式の型推論中になる可能性がありますか?それらの明示的な型を与えると助けになりますか? –
@ColinBarrettあなたは 'switchX'などのために' CGFloat'を追加しますか? – KexAri