• Swift has two types of properties • computed or stored • Indicate lazy stored property by lazy modifier • Lazy stored property created when it is first accessed
// ͜ΕΑΓ final class ViewController: UIViewController { var user: User! var client: APIClient! var userManager: UserManager! { didSet { user = userManager.loginUser client = APIClient(user.session) } } }
// ͬͪ͜ͷ΄͏͕͍͍ΑͶ final class ViewController: UIViewController { lazy var user: User = self.userManager.loginUser lazy var client: APIClient = APIClient(self.user.session) var userManager: UserManager! }
// Application Context public class Context { public static let staticContext = Context() public var path: String { return "data.txt" } } // A View Controller final public class ViewController: UIViewController { public var context = Context.staticContext lazy public var dataStore: String = self.context.path }