Значение SwiftUI State не меняется

Я не знаком с State. Я протестировал код:

import SwiftUI
class TestState {
    @State var a: Int = 3
    func increaseA() {
        print("before \(a)") //3
        a += 1
        print("after \(a)") //3?
    }
}

TestState().increaseA()

Бывает, что напечатанное значение равно 3! Где я сделал не так?

После комментария, что State должен быть в View, Я протестировал код:

import SwiftUI
struct TestState: View {
    @State var a: Int = 3
    func increaseA() {
        print("before \(a)")
        a += 1
        print("after \(a)")
    }

    var body: some View {
        increaseA()
        return Text(a.description)
    }
}

Бывает, что Textпокажите "3", а не "4". Я не понимаю

1 ответ

Решение

Ключевое слово @State было впервые введено в Swift5.1, это @propertyWrapper, ранее называлось @propertyDelegate. Более подробную информацию можно найти на сайте property-wrappers.md. КАК СКАЗАЛ ПОЛХАДСОН: @State специально разработан для использования в локальном представлении, Apple рекомендует пометить свойства @State как частные, чтобы действительно подтвердить, что они не предназначены для доступа в другом месте:

Другие вопросы по тегам