티스토리 뷰

Mobile/iOS

[iOS/Swift4] KVO 사용하기

out of coding 2017. 10. 10. 18:14

시작


일단 RXSwift등을 이용하여 개발을 하면서, KVO에 대해서 고민한적은 없다.
지인이 질문을 하기도 하고 해서, 이번 기회에 한번 훑어보는 시간이 생겨서 글을 남기려 한다.
간단하게 이 기능을 설명하자면, value가 변경이 되었을 경우에 옵저버를 통하여 값이 변경되는점을 가지고 프로그래밍을 할 수 있는것이다.
따지고 보면 리액티브랑 동일한 개념이지만... 단순히 이건 값만 감시하는것이니 다르다고 할수 있을것 같고.
swift로만 되어 있는 소스에는 기본적으로 willSet 같은 기능이 있어서, 이것을 대체할수 있는 방법이라고 생각한다.


구현


개념을 알았으니 그냥 구현하여 보도록 하자.
기준 소스는 swift4에서 사용하는 방법으로 구현을 하였다.
하위 버전일 경우에는 소스가 지저분해지므로 여기에서는 다루고 싶지 않다. ㅠ

1
2
3
4
5
6
7
8
9
10
class People: NSObject {
    @objc dynamic var name: String = ""
}
 
let people = People()
people.observe(\.name, changeHandler: { (object, change) in
    print("People name is \(object.name)")
})
 
people.name = "DH"
cs

결과는 당연스럽게도 People name is DH 라고 나온다.

이번 버전에서 람다형식으로 아주 깔끔하게 코드가 변경된게 너무 좋은 부분인것 같다.
* 위의 \.name은 축약형인데... 조금 더 자료를 찾아보고, 어떻게 축약되었는지는 추후에 더 자세하게 적도록 하겠다.


'Mobile > iOS' 카테고리의 다른 글

[iOS] CoreData Stack  (0) 2017.10.18
[iOS] Cocoa Touch Static Library 만들기  (0) 2017.10.16
[iOS] Code Sign / Provisioning  (0) 2017.10.10
[iOS/Objective-C] NSCoding, NSCopying  (0) 2017.09.27
[iOS/Swift] Singleton 사용하기  (0) 2017.09.27
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함