我的应用有 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
}
}
}
最佳答案
因为 i++ 应该在 if 语句之外
...
while i < number{
i = i + 1
if number % i == 0 {
isPrime = false
}
...
请注意:由于您正在尝试计算有时可能需要的东西,因此(当您了解更多时)您将不得不在主线程之外进行此类计算。您的应用程序锁定是因为您阻塞了主线程,而主线程是控制您应用程序的 UI/触摸/交互的线程。查看dispatch_async
PPS:了解如何在 XCode 中设置断点并单步执行/单步执行,您将能够调试应用程序的流程。
关于ios - 当我在我的应用程序中按下一个按钮时,整个应用程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41506889/