我的应用有3个组件:
按下按钮时,整个应用程序冻结(但不会崩溃),我不明白为什么。我尝试在网上搜索这个,但没有一个解决了我的问题。有什么我可以检查错误,或按钮冻结应用程序的原因。
这是我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var text: UITextField!
@IBOutlet weak var label: UILabel!
var i = 2
@IBAction func buttonPressed(_ sender: Any) {
if let userEnteredText = text.text{
var isPrime = true
let number:Int = Int(userEnteredText)!
while i < number{
if number % i == 0{
isPrime = false
i = i + 1
}
if isPrime == true{
label.text = "\(number) is Prime"
label.textColor = UIColor.black
}else{
label.text = "\(number) is not Prime"
label.textColor = UIColor.black
}
}
}else{
label.text = "Error-Enter a positive integer"
label.textColor = UIColor.red
}
}
}
答案 0 :(得分:1)
因为i ++应该在if语句之外
...
while i < number{
i = i + 1
if number % i == 0 {
isPrime = false
}
...
请注意:由于您正在尝试计算有时可能需要的内容,因此您(在学习更多内容时)会在主线程之外执行此类计算。您的应用程序会锁定,因为您正在阻止主线程,即控制应用的UI /触摸/交互的主线程。查看dispatch_async
PPS:了解如何在XCode中指向断点并逐步进入,您将能够调试应用程序的流程。