source

글로벌 변수 작성 방법

gigabyte 2023. 4. 19. 23:07
반응형

글로벌 변수 작성 방법

View Controller 간에 공유해야 하는 글로벌 변수가 있습니다.

Objective-C에서는 정적 변수를 정의할 수 있지만 Swift에서는 글로벌 변수를 정의할 방법을 찾을 수 없습니다.

당신은 그것을 하는 방법을 알고 계십니까?

Swift 공식 프로그래밍 가이드:

전역 변수는 함수, 메서드, 폐쇄 또는 유형 컨텍스트 외부에 정의되는 변수입니다.전역 상수와 변수는 항상 느릿느릿 계산됩니다.

모든 파일에서 정의할 수 있으며 현재 파일에 액세스할 수 있습니다.module아무 곳이나.따라서 파일 내의 범위 외 어딘가에 정의할 수 있습니다.할 필요가 없다static모든 글로벌 변수가 느릿느릿 계산됩니다.

 var yourVariable = "someString"

현재 모듈의 모든 위치에서 액세스할 수 있습니다.

단, 글로벌 변수는 응용 프로그램 상태에 적합하지 않고 주로 버그의 원인이 되므로 이를 피해야 합니다.

답변에서 보듯이 Swift에서는 이들을 캡슐화할 수 있습니다.struct어디에나 접속할 수 있습니다.Swift에서도 정적 변수 또는 상수를 정의할 수 있습니다.캡슐화 위치struct

struct MyVariables {
    static var yourVariable = "someString"
}

이 변수는 모든 클래스 또는 어디에서나 사용할 수 있습니다.

let string = MyVariables.yourVariable
println("Global variable:\(string)")

//Changing value of it
MyVariables.yourVariable = "anotherString"

메서드 또는 클로저 이외의 방법으로 정의된 글로벌 변수는 private 키워드를 사용하여 범위를 제한할 수 있습니다.

import UIKit

// MARK: Local Constants

private let changeSegueId = "MasterToChange"
private let bookSegueId   = "MasterToBook"

모든 클래스에서 사용할 경우 다음을 사용할 수 있습니다.

public var yourVariable = "something"

1개의 클래스만으로 사용하는 경우는, 다음과 같이 사용할 수 있습니다.

var yourVariable = "something"

실제로 전역 변수를 원하지 않고 대신 앱이 종료되어도 지속되는 값을 저장하려면 다음과 같이 하십시오.

뷰 컨트롤러 간에 실제로 데이터를 전달하지 않고 단순히 글로벌 변수를 저장하려는 경우 다음과 같이 수행할 수 있습니다.

Swift 5에서 이 작업을 수행하는 방법에 대한 자세한 설명은 다음과 같습니다.https://www.hackingwithswift.com/example-code/system/how-to-save-user-settings-using-userdefaults

요약:.

값을 설정하려면:

let defaults = UserDefaults.standard
defaults.set("value", forKey: "key")

String 값을 가져오려면:

let key = defaults.object(forKey: "StringKey") as? [String] ?? [String]()

정수 값을 가져오려면:

let key = defaults.integer(forKey: "IntegerKey")

언급URL : https://stackoverflow.com/questions/26195262/how-to-create-a-global-variable

반응형