패스트캠퍼스) ios 개발 챌린지

[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션

student513 2020. 11. 24. 14:49

willset (x)->(y): 현재값이 x인데 앞으로 바뀔 값이 y

didset (x)->(y): 이전값이 x인데 바뀌고 난 값이 y

stored property에서만 사용 가능하다

struct Person {
    var firstName: String {
        willSet {
            print("willSet: \(firstName) --> \(newValue)")
        }
        didSet {
            print("didSet: \(oldValue) --> \(firstName)")
        }
    }
    var lastName: String
    
    lazy var isPopular: Bool = {
        if fullName == "Jay Park" {
            return true
        } else {
            return false
        }
    }()
    
	...
    
    static let isAlien: Bool = false

}

lazy property ; 인스턴스가 생성될 때 실행되지 않고 해당 프로퍼티가 접근될 때 실행됨

Person per를 선언할 때 메소드가 실행되지 않고 per.isPopular()를 호출할 때 그제서야 실행된다

이런 간단한 프로퍼티에는 그리 큰 절약 효과가 있지는 않겠지만 무거운 연산을 필요로하는 프로퍼티라던가 프로퍼티가 많아진다면

말이 달라진다

프로퍼티와 메소드는 어떤 차이가 있을까?
프로퍼티나 메소드나 동일한 작업이 가능하지만 무거운 연산을 필요로하는 작업이라면 메소드로 작업을 해주는 것이 좋다.

 

mutating: computed property가 stored property를 변경할 때

static let, func : 타입 프로퍼티뿐만 아니라 타입 메소드도 선언 가능

 

struct Lecture {
    var title: String
    var maxStudents: Int = 10
    var numOfRegistered: Int = 0
    
    func remainSeats() -> Int {
        let remainSeats = maxStudents - numOfRegistered
        return remainSeats
    }
    
    mutating func register() {
        // 등록된 학생수 증가시키기
        numOfRegistered += 1
    }
    
    static let target: String = "Anybody want to learn something"
    
    static func 소속학원이름() -> String {
        return "패캠"
    }
    
}

var lec = Lecture(title: "iOS Basic")

//remainSeats(of: lec)
lec.remainSeats()

 

올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq