iOS 면접 경험 (TIL)
안녕하세요! 접니다! 오늘은 제가 꼭 가고싶은 위치인 판교에서 면접을 보고 왔답니다.!!!
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