Created
October 5, 2025 13:00
-
-
Save kyungpyoda/8b5c779babfdb282303cba23873cd2ba to your computer and use it in GitHub Desktop.
TinyRIB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // TinyRIB.swift | |
| // | |
| // Created by 홍경표 on 10/5/25. | |
| // | |
| final class TinyInteractor: Interactor { | |
| let becomeActiveHandler: (() -> Void)? | |
| let resignActiveHandler: (() -> Void)? | |
| init( | |
| becomeActiveHandler: (() -> Void)?, | |
| resignActiveHandler: (() -> Void)? | |
| ) { | |
| self.becomeActiveHandler = becomeActiveHandler | |
| self.resignActiveHandler = resignActiveHandler | |
| } | |
| override func didBecomeActive() { | |
| super.didBecomeActive() | |
| becomeActiveHandler?() | |
| } | |
| override func willResignActive() { | |
| super.willResignActive() | |
| resignActiveHandler?() | |
| } | |
| } | |
| protocol TinyRIB: AnyObject { | |
| func build(withListener: Listener) -> Routing | |
| func didBecomeActive() | |
| func willResignActive() | |
| var listener: Listener? { get set } | |
| associatedtype Listener //: AnyObject | |
| } | |
| extension TinyRIB { | |
| func build(withListener listener: Listener) -> Routing { | |
| self.listener = listener | |
| let interactor = TinyInteractor( | |
| becomeActiveHandler: { [weak self] in | |
| self?.didBecomeActive() | |
| }, | |
| resignActiveHandler: { [weak self] in | |
| self?.listener = nil | |
| self?.willResignActive() | |
| } | |
| ) | |
| return Router(interactor: interactor) | |
| } | |
| func willResignActive() { | |
| // no-op | |
| } | |
| } | |
| protocol MyListener: AnyObject { | |
| func hello() | |
| } | |
| final class MyTinyRIB: TinyRIB { | |
| weak var listener: MyListener? | |
| func didBecomeActive() { | |
| print("myTiny active!!!") | |
| listener?.hello() | |
| } | |
| func willResignActive() { | |
| print("myTiny resign!!!") | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment