투케이2K

51. (swift/xcode) lazy (래지) 변수 선언 및 데이터 출력 수행 실시 본문

Swift

51. (swift/xcode) lazy (래지) 변수 선언 및 데이터 출력 수행 실시

투케이2K 2022. 3. 2. 12:14

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[S_LazyClass 클래스]

import Foundation

class S_LazyClass {
    
    
    // MARK: - [클래스 설명]
    /*
    // -----------------------------------------
    1. Lazy 변수 관리 클래스
    // -----------------------------------------
    */
    
    
    
    // MARK: - [Lazy 변수 설명]
    /*
    // -----------------------------------------
    1. lazy 변수 : 메모리 관리에 필요한 변수 이며, 호출 되기 전까지 연산되지 않습니다
    2. lazy 변수를 사용하므로써 사용자는 불필요한 메모리 할당과 실행을 방지할 수 있습니다
    3. lazy 변수는 var 키워드와 함께 사용됩니다 (let 과 사용 안됨)
    4. lazy 변수는 struct (구조체) 나 class (클래스) 의 멤버로만 사용 가능합니다
    5. lazy 변수는 처음 사용될 때 메모리에 값을 올리고 그 이후 부터는 계속해서 메모리에 올라온 값을 사용합니다
       - lazy 변수는 처음 값을 계속 유지합니다 ()
    // -----------------------------------------
    */
    
    
    
    // MARK: - [전역 변수 선언 실시]
    var name:String = ""
    var age:Int = 0
    
    
    
    // MARK: - [클래스 생성자 초기화 : init]
    init(name:String, age:Int){
        self.name = name // [전역 변수에 값 매핑]
        self.age = age // [전역 변수에 값 매핑]
    }
    
    
    
    // MARK: - [lazy 변수 선언 및 리턴 형식 정의]
    lazy var userInfo:String = {
        
        // [포맷 String 리턴 실시]
        return "name : \(self.name) , age : \(self.age))"
    }()
    
    
} // MARK: [클래스 종료]
 

[testMain 함수]

    func testMain(){
        print("")
        print("===============================")
        print("[ViewController >> testMain() :: 테스트 함수 수행 실시]")
        print("===============================")
        print("")
        
        
        // MARK: [lazy 선언 클래스 호출 및 데이터 최초 삽입 실시]
        var lazyClass_1 = S_LazyClass(name: "투케이", age: 29)
        print("")
        print("===============================")
        print("[lazyClass_1 [사용자 정보] :: \(lazyClass_1.userInfo)]")
        print("===============================")
        print("")
        
        
        // MARK: [처음 값 출력 : 전역 변수 값 변경 후 >> 다시 lazy 변수 출력]
        lazyClass_1.name = "투케이TWOK"
        lazyClass_1.age = 0
        print("")
        print("===============================")
        print("[lazyClass_1 [사용자 정보] :: \(lazyClass_1.userInfo)]")
        print("===============================")
        print("")
        
        
        // MARK: [변경 값 출력 : 클래스 초기화 재수행 >> 다시 lazy 변수 출력]
        var lazyClass_2 = S_LazyClass(name: "TWOK", age: 30)
        print("")
        print("===============================")
        print("[lazyClass_2 [사용자 정보] :: \(lazyClass_2.userInfo)]")
        print("===============================")
        print("")
    }
 

[결과 출력]

 

 

반응형
Comments