title: Why isn't a implicit optional required in a class's init method?
body: <p>I'm following a tutorial from Ray Wenderlich's website about ARC in Swift and I'm curious to know why is a optional allowed but not an implicit optional when creating a class in a playground?</p>
  
  <p>The playground code I have so far is: </p>
  
  <pre><code>class User {
      var name: String
      init(name: String) {
          self.name = name
          print("User \(name) is initialized")
      }
      deinit {
          print("User \(name) is being deallocated")
      }
  }
  
  class Phone {
      let model: String
      var owner: User?
      init(model: String) {
          self.model = model
          print("Phone \(model) is initialized")
      }
      deinit {
          print("Phone \(model) is being deallocated")
      }
  }
  
  do {
      let user1 = User(name: "John")
  }
  let user2 = User.init(name: "Berry")
  </code></pre>
  
  <p>In the Phone class, if I change the owner variable to an implicit optional with an exclamation point then the playground doesn't throw an error however if I remove the question mark or don't make it optional then I receive an error.</p>
  
  <p>Doesn't an implicit optional force an app to crash if it isn't set?</p>
  
  <p>Any help is appreciated to get a firm understanding of why an implicit optional is okay.</p>