The approach used to provide the initial value to the property.
The purpose of this approach is to obtain the loosely coupled code.
There are three type to obtain this -
By Initialisation -> In this type we need to pass the initialisation value in the init func of the class
class DemoVC:UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//passing dependency value by init func
let obj = Language(langName: "Swift")
print(obj.name)
}
}
class Language{
var name:String
///1. Initialisation Dependency Injection
init(langName:String) {
self.name = langName
}
}
By Function -> In this type we pass the initial value as the function param. And the class property is initialised from this param.
class DemoVC:UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//setting dependency value passing parameter in method
let obj = Language()
obj.getLanuageDetails(lanugage: "Swift")
}
}
class Language{
private var name:String!
func getLanuageDetails(lanugage:String){
name = lanugage
print("Your have shown interest in \(lanugage) Language.")
}
}
By Property -> Here we generally create / access the class property and set the value directly.
class DemoVC:UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
//setting dependency value by setting property directly
let obj = Language()
obj.name = "Objective C"
}
}
class Language{
var name:String = "Swift"
}
Top comments (1)
In my experience working with Swift and iOS development, I have found that using dependency injection is crucial when building large-scale applications. It helps avoid code duplication, enhances testability and modularity. Moreover, it makes the code reusable, readable, and easy to maintain.