簡體   English   中英

NSInteger 0 + 0 = 4300282608

[英]NSInteger 0+0=4300282608

我正在開發一個簡單的計算器應用程序,以了解OSX開發的工作原理(這不是功課)。 當觸發addAction(_ sender: NSButton) ,它會將currentCountamountToAdd一起添加,然后更新currentCount並將其設置為currentCountLabel

問題:當應用程序首次啟動時, currentCountamountToAdd設置為0但加在一起時等於4,300,282,608。 如果我在添加之前按下清除按鈕,則等於0,這是正確的。

問題:如何更改代碼第一次進行正確的計算。 這似乎是一個鑄造問題。

import Cocoa

class ContainerViewController: NSViewController {

    var currentCount: Int = 0
    var amountToAdd: Int = 0

    @IBOutlet weak var currentCountLabel: NSTextField!
    @IBOutlet weak var amountToAddTextField: NSTextField!


    override func viewDidLoad() {
        super.viewDidLoad()
        currentCountLabel.integerValue = 0
        amountToAddTextField.integerValue = 0
    }

    @IBAction func amountTextField(_ sender: NSTextField) {
        amountToAdd = amountToAddTextField.integerValue
    }

    @IBAction func addAction(_ sender: NSButton) {
        currentCount = currentCount + amountToAdd
        currentCountLabel.integerValue = currentCount
    }

    @IBAction func clearAction(_ sender: Any) {
        currentCount = 0
        amountToAdd = 0
        currentCountLabel.integerValue = 0
        amountToAddTextField.integerValue = 0
    }

    func getEntryLog() -> String {
        return "\(currentCount) + \(amountToAdd) = \(currentCount + amountToAdd)"
    }
}

在此輸入圖像描述

上傳圖像后,當前計數最終成為每次運行時的隨機數...

我建議你在addAction添加一個斷點,並確認這兩個值中的哪一個是不正確的。 根據您與我們分享的內容,推測currentCount不是您認為的那樣。

我在這里看到的唯一一個小的邏輯斷開是在viewDidLoad ,你假設amountToAddcurrentCount都是0 ,雖然從技術上講,對於任何人來說,這個視圖控制器可能已經重置了這些值之一(可能是錯誤的)視圖控制器已實例化,並在加載時。

要解決此邏輯斷開連接,您可以顯式使用這些變量而不是0:

override func viewDidLoad() {
    super.viewDidLoad()
    currentCountLabel.integerValue = currentCount
    amountToAddTextField.integerValue = amountToAdd
}

或者,如果要加載視圖控制器以重置視圖,則讓viewDidLoadclearAction調用一些常見的例程:

override func viewDidLoad() {
    super.viewDidLoad()
    resetValues()
}

@IBAction func clearAction(_ sender: Any) {
    resetValues()
}

private func resetValues() {
    currentCount = 0
    amountToAdd = 0

    currentCountLabel.integerValue = 0
    amountToAddTextField.integerValue = 0
}

如果您有其他代碼提供此視圖控制器,我建議您檢查可能已設置(可能不正確) currentCount

或者在viewDidLoad放置一個斷點,並在值上添加一個不是您認為應該的值的監視。 例如,我控制 - 在變量視圖中單擊currentCount ,並選擇“Watch currentCount”,現在每次該值更改時它都會停止。

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM