<h1><center> iOS interview 10 </center></h1> ###### tags: `๐ป ๋ฉด์ ์ง๋ฌธ` ###### date: `2025-11-0217:21:33.284Z` > [iOS interview](https://github.com/JeaSungLEE/iOSInterviewquestions) ## ๊ทผํฉ https://skillbuilder.aws/ - ๋ฐ์๊ฒ ์ง๋์ด์! - ์ง๋์ฃผ ์ด๋ ฅ์ ์ด๋ป๊ฒ ์ฐ๋ฉด ์ข์๊น? - ์ด๋ฐ ์ ๋ฐ ์ผ๋ค ๋ค ์ผ๋จ ์จ๋ณด๊ณ (๋ฆฌ์คํธ์ ) - ์ ๋ฆฌํด ๋๊ฐ๋ณด์ - (ํ์ง๋ง ์์ง ๋ชปํ์ด์..) ## ๋ชฉํ (์ง๋ ์์ ) - DI์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ง ํ์ํ ๊น? - Needle - DI์์ ๊ฐ์ฒด์ ์์ฑ์ฃผ๊ธฐ - DIContainer์ registerํ๋ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ์ ์์กด์ฑ ๊ด๋ฆฌ >> Needle, Swinject > Assembly < SwiftUI?? - **swift-dependencies** > TCA์์ ์ ๊ณตํ๋ ๊ฒ | TCA๊ฐ ๊ฑฐ์ ํ์ค... > ๋ชจ๋ฅด๊ณ ์ฐ๋ ์ฌ๋๋ ๋ง์... ``` swift protocol Network { func request() } // DependencyKey ์ ์ struct CoreDependecnyKey: DependencyKey { let network: Network let hello: () -> () /// DependencyKey ํ๋กํ ์ฝ ์ฑํํ๊ธฐ ์ํ ๊ฐ /// ์ด ๊ฐ ์์ฒด๊ฐ static์ด๋๊น ๊ฐ์ฒด๊ฐ ๊ณ์ ์ด์์๋ ๊ฒ์ด๋ค!! static let liveValue: CoreDependencyKey = { @Dependency(\.token) var token // ๊ฐ ํ์ , ์ฐธ์กฐํ์ ์ ์ ๋ ์ ๊ฒฝ์ฐ๊ฒ ๋ ๊ฑธ๊น์? return CoreDependencyKey( // ์์ ์์ฑ์ ํด๋ฒ๋ฆผ, ์ฑ ์คํ๋ถํฐ ๋๊น์ง ์ด์์์ network: NetworkImpl(token: token), // Swinject์ ๊ฐ์ด ๊ฐ์ฒด ์์ฑ์ฃผ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ // Swinject๋ register์์ singleton ์ด๋ฆด๋..? ์๋๋ฉด ์ฌ์ฉ์ฒ์์ ์ ๊น ์ด๊ฒ ๋๋..? - inobjectscope hello: { print("Hello world!!") } ) }() /// ํ ์คํธ static let testValue: CoreDependencyKey = { return CoreDependencyKey( ) }() } // Swift-Dependency์ ๋ฑ๋ก extension DependecnyValues { var core: DependencyKey { // ์ฌ๊ธฐ์ DependencyKey์ liveValue get { self[CoreDependencyKey.self] } set { self[CoreDependencyKey.self] = newValue } } var coreTest: DepencyKey { get { self[CoreDependencyKey.self] } set { self[CoreDependencyKey.self] = newValue } } } /// ์ฌ์ฉ์ฒ @Dependency(\.core.network) var network // ์ํ์ ํ์ฅ // ์ด๊ฒ ๊ถ์ฅํ๋ ํํ @Dependency(\.core) var core core.hello() @Reducer struct HelloReducer { @ObservableState struct State { } enum Action { case hello } @Dependency(\.core) var core @Dependency(\.core.network) var network var body: some ReducerOf<Self> { Reduce { state, action in switch action { case .hello: return .run { send in core.hello() } } } } } @Observable class Hello { @ObservedIgnored @Dependency(\.core) var core } ``` 1. ์์ ๋๊ฐ ๋๋ฌด ๋์... ์ข ์ด๋ ค์... 2. ํ ์คํธ๋ฅผ ๊ณ ๋ คํด์ ์ค๊ณ๊ฐ ๋์ด์๋ค. - ๊ตฟ๊ตฟ 3. ์ฐ๊ธฐ ํธํจ ### ๋ฌด์์ ํ ๊ฒ ์ธ๊ฐ? - ๋ฉด์ ์์ ๋ง #### Lifecycle ์์ฝ **1. Transient** ์๋น์ค ์ปจํ ์ด๋์์ ์์ฒญํ ๋๋ง๋ค ์์ฑ๋๋ค. ๊ฐ๋จํ Stateless ์๋น์ค์ ์ ํฉํ๋ค. **2. Scoped** ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ถํฐ ์๋ต๊น์ง ์ ์ง๋๋ค. ํด๋ผ์ด์ธํธ๋ง๋ค ์์ฑ๋๋ฏ๋ก ์ฐ๊ฒฐ๋๋ ํด๋ผ์ด์ธํธ ์ ๋งํผ ์กด์ฌ๋ ์ ์๋ค. **3. Singleton** ํด๋ผ์ด์ธํธ ์์ฒญ๊ณผ ๊ด๊ณ ์์ด ์น์๋น์ค ์์๋ ๋๋ถํฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ง์๋ ์ค์ง 1๊ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค. ์ข ๋ฃ๋ ๋๊น์ง ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๊ณ ๋ คํด์ผ ํ๋ค.
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up