안드로이드에는 시간이 변경될 때 이벤트를 보내주는 것이 있는데, iOS에는 없다.(있긴 있는데 날짜 변경만 알려주는 정도이다.)
그래서 직접 만들었다.
TimeChangeEvent.swift
사용방법
TimeChangeEvent.add(self, event: .HOUR)
TimeChangeEvent.remove(self)
시간 변경 이벤트가 필요한 곳에서 add 메소드를 불러준다. 그리고 TimeChangeDelegate 를 상속받아서 timeChanged 메소드에 필요한 작업을 코딩한다.
마지막으로 add 메소드를 호출해준 클래스가 소멸될 때 remove를 호출해준다.
소스 내부를 보면 TimeChangeDelegate::timeChanged 를 호출할 때 for문을 돌면서 호출한다.
하지만 이 방식으로 할 경우 동기처리방식의 로직이 timeChanged에 구현되어 있을 때 딜레이가 생길 수 있다.
만약 동기처리 방식에서도 문제가 없으려면
NotificationCenter.default.addObserver
NotificationCenter.default.post
를 이용해서 TimeChangeDelegate 부분과 timeChanged를 호출해주는 부분을 변경하면 될 것 같다.
댓글 없음:
댓글 쓰기