简体   繁体   中英

Doubts about Swift initializers

I know this sounds like a silly question for all of you but I wanted to have more clarity on the differences of using init() or not in a structure

I meant that whether I use init() or not the parameters are still required. That's why I was wondering the difference of using init() or simple variables.


1^ Example without init()

struct ProductsImageView: View {
    
     var image: String
     var title: String
     var time: Int
     var isAllInOne: Bool = false

    
    var body: some View {

   }
} 

2^ Example with init()

struct ProductsImageView: View {
    
     var image: String
     var title: String
     var time: Int
     var isAllInOne: Bool
    
    init(image: String, title: String, time: Int, isAllInOne: Bool = false) {
        self.image = image
        self.title = title
        self.time = time
        self.isAllInOne = isAllInOne
    }
    
    var body: some View {
  }
}

In both cases the various parameters will still be required when we call a structure in the code

ProductsImageView(image: "slider3", title: "Lorem", time: 60, isAllInOne: true)
  • Now I wanted to know when is it right to use init() and when not?

  • What are the differences?

Excuse me again for the stupid question but I prefer to have clear what I learn often I have some doubts and I ask you

If you don't write an init in the struct declaration, Swift will synthesize one for you. The init you wrote in example 2 is exactly the same as what Swift synthesizes in example 1.

However, the visibility of the synthesized init is always internal , even if the struct is public . So when you're creating a public struct and you want its init to be visible in other modules, you must write out its public init explicitly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM