Slide 14
Slide 14 text
DI の実装方法と設計 - iOS のエントリーポイントで依存性を注入
14
commonMain/InitKoin.kt
fun initKoin(
config: KoinAppDeclaration? = null,
iosNativeModule: Module? = null,
) {
val modules = mutableListOf(
commonSharedUiModule,
commonCoreDomainModule,
platformCoreDataModule,
platformCoreAudioModule,
)
iosNativeModule?.let {
modules.add(it)
}
KoinDispatcher.start(
modules = modules,
config = config,
)
}
@main
struct iOSApp: SwiftUI.App {
init() {
FirebaseApp.configure()
InitKoinKt.doInitKoin(config: nil, iosNativeModule: iosNativeModule)
sharedUi.App.companion.initialize(
krashlyticsCore: KrashlyticsCoreImpl(),
remoteConfigCore: RemoteConfigCoreImpl()
)
}
var body: some Scene {
…
}
}
var iosNativeModule: Koin_coreModule = MakeNativeModuleKt.makeNativeModule(
krashlyticsCore: { _ in
return KrashlyticsCoreImpl()
},
remoteConfigCore: { _ in
return RemoteConfigCoreImpl()
}
)
iosApp/iOSApp.swift (再掲)