Instructions
Add new services to Leavn's DIContainer:
-
Create service protocol:
// Services/MyDomain/MyServiceProtocol.swift public protocol MyServiceProtocol { func doSomething() async throws -> Result } -
Create implementation:
// Services/MyDomain/MyServiceLive.swift public final class MyServiceLive: MyServiceProtocol { public init() { }
public func doSomething() async throws -> Result {
// Implementation
}
}
3. **Register in DIContainer**:
```swift
// For singletons (stateful services):
private lazy var _myService = MyServiceLive()
var myService: MyServiceProtocol {
_myService
}
// For factories (stateless services):
var myService: MyServiceProtocol {
MyServiceLive()
}
- Use in ViewModels:
let service = DIContainer.shared.myService
Use this skill when: Creating new service, adding dependency, setting up DI, refactoring to protocol-oriented design