카테고리 없음

iOS 면접 경험 (TIL)

양시관 2024. 10. 25. 20:25

안녕하세요! 접니다! 오늘은 제가 꼭 가고싶은 위치인 판교에서 면접을 보고 왔답니다.!!!

 

5년차 서류가 붙어버렸어요,, 인사팀에서 실수해서 뽑으신거라는 생각이 강하게 들지만! !!
굳이 그런생각을 가지며 할 필요는 없겠죠?! 5년차인만큼 엄청난 iOS CS 지식을 물어보셨
습니다.. 그 중 솔직히.. 15/8개는 대답했고,,, 나머지는 무슨 생전 처음 들어보는 단어가 있
었습니다.... 오늘은 그걸 공부해서 소개 해보려고 합니다,!! 

자,, iOS 앱 개발자를 준비하시는 취준생분들! KVO 를 아시나요??

이제 시작합니다!!!!

 

KVO란?????

키-값 관찰은 다른 객체의 속성 변경 사항을 객체에 알리는 데 사용하는 Cocoa 프로그래밍 패턴입니다. 모델과 뷰와 같이 앱의 논리적으로 분리된 부분 간의 변경 사항을 전달하는 데 유용합니다

라고 공식문서에서는 얘기하고 있네요! 대충의식의 흐름대로 이해해보자면 다른 객체의 속성이 바뀌면은 그것을 보고 있던 관찰자가 야야야제 저거 바뀌었어! 라고 말하는거와 같네요! 하지만 NSObject를 상속을 받아야만 사용할 수 있다는 단점아닌 단점이있네요! (솔직히 단점같은 obj 시름..) 

 

예시를 알려드리겠습니다! 

KVO 로 관찰하려는 속성을 @objc속성과 dynamic수정자를 모두 사용하여 표시합니다. 아래 예에서는 관찰할 수 있는 속성이 있는 클래스를 정의합니다

class MyObjectToObserve: NSObject {
    @objc dynamic var myDate = NSDate(timeIntervalSince1970: 0) // 1970
    func updateDate() {
        myDate = myDate.addingTimeInterval(Double(2 << 30)) // Adds about 68 years.
    }
}

 

옵저버 클래스의 인스턴스는 하나 이상의 속성에 대한 변경 사항에 대한 정보를 관리합니다. 관찰자를 만들 때 관찰하려는 속성을 참조하는 키 경로로 메서드를 호출하여 옵저빙 시작합니다!

 

class MyObserver: NSObject {
    @objc var objectToObserve: MyObjectToObserve
    var observation: NSKeyValueObservation?


    init(object: MyObjectToObserve) {
        objectToObserve = object
        super.init()


        observation = observe(
            \.objectToObserve.myDate,
            options: [.old, .new]
        ) { object, change in
            print("myDate changed from: \(change.oldValue!), updated to: \(change.newValue!)")
        }
    }
}

 

이제 전달을 해줘야겠죠! 내가 뭘관찰할건지1 

let observed = MyObjectToObserve()
let observer = MyObserver(object: observed)

이렇게요! 

이렇게 사용법을 얼추는 알아봤습니다! 물론 다가오진않아요,, delegate 패턴도 어려운 저에게 무리입니다(?) 는 개뿔 포기는 없습니다. 

여러분들도 공식문서 링크를 달아드릴테니! 꼭 한번 보시고 예시를 작성해보세요1! 

 

 

https://developer.apple.com/documentation/swift/using-key-value-observing-in-swift\

 

오늘 면접은 5년차라,, 너무 어려웠지만 그렇게 멀다고만 느끼진않았습니다! 더 열심히 오늘도 화이팅1