gpt4 book ai didi

ios - 如何在展开之前分配这些对象?

转载 作者:行者123 更新时间:2023-11-30 13:06:06 25 4
gpt4 key购买 nike

所以,当我从 Android 开发转向 IOS 时,我试图制作自己的计算器来娱乐,现在我尝试纠正这个错误 40 分钟,现在我放弃了,帮助我...

好吧,错误指向第二个 @IBAction 方法,该方法向方法 func add(param1, param2, param3) 传递两个可选值。所以首先我认为 viewWillAppear 是在与 UIElements 建立连接后启动的。但这意味着我必须能够访问一些可重写的方法,并且在与 UIElements 建立连接之前启动。

这是一个好方法吗?另一个解决方案是在使用选项之前测试它们,但我知道如果您确定您的选项不包含 nil 值,您可以跳过此方法。

import UIKit

class ViewController: UIViewController {
//The memory that will be reserved for computation
var memoryValue1: Double!, memoryValue2: Double!, memoryValue3: Double!, memoryValue4: Double!

var firstAttempt: Bool!

//UIElemet Outlets
@IBOutlet weak var outPutText: UILabel!

override func viewWillAppear(animated: Bool) {
memoryValue1 = 0.0
firstAttempt = true
}

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func add(value: Double, attempt: Bool, memory: Double){
if attempt {
self.firstAttempt = false
self.memoryValue1 = value
self.outPutText.text = String(value)
} else {
var newValue: Double = memory
newValue = newValue + value
self.outPutText.text = String(newValue)
}
}

@IBAction func pressedC(sender: AnyObject) {
outPutText.text = "0.0"
}
@IBAction func pressed1(sender: AnyObject) {
add(1.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed2(sender: AnyObject) {
add(2.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed3(sender: AnyObject) {
add(3.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed4(sender: AnyObject) {
add(4.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed5(sender: AnyObject) {
add(5.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed6(sender: AnyObject) {
add(6.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed7(sender: AnyObject) {
add(7, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed8(sender: AnyObject) {
add(8.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed9(sender: AnyObject) {
add(9.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
@IBAction func pressed0(sender: AnyObject) {
add(0.0, attempt: self.firstAttempt, memory: self.memoryValue1)
}
}

最佳答案

var memoryValue1: Double! 不是像 Java 中那样的引用类型。如果您尝试在它为零(null)时访问它,您的应用程序将会崩溃。当相关方法尝试将 memoryValue1 中包含的值传递给 add 方法时,Access 会包含类似 self.memoryValue1 的代码。

如果您改掉在所有属性声明末尾添加 ! 的习惯,您的学习过程将会大大增加。继续为此类属性赋值或使用 ? 代替。

您可以简单地分配:

var memoryValue1: Double = 0.0

关于ios - 如何在展开之前分配这些对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com