Как преподаватель, или, скорее, преподаватель, программист, я некоторое время размышлял над тем, что на самом деле происходит, когда вы устанавливаете переменную или пусть. Сегодня мне очень понравилась @Cocoadelica помощь в настройке шаблона для пользователей. Мы остановились на этом решении:Создание - что он делает?
AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let isOnboarded:Bool = NSUserDefaults.standardUserDefaults().boolForKey("Onboarded")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// instantiate your desired ViewController
let dashboardViewController = storyboard.instantiateViewControllerWithIdentifier("DashboardVC") as! UIViewController
let onboardingViewControllerOne = storyboard.instantiateViewControllerWithIdentifier("OnboardingVCOne") as! UIViewController
let window = self.window
if (isOnboarded) {
window!.rootViewController = dashboardViewController
}else{
window!.rootViewController = onboardingViewControllerOne
}
return true
}
Но я заметил, что она конкретизирует два viewControllers, даже если логика будет нужен только один. Я вижу это довольно часто. Мы создаем переменные, которые никогда не будут использоваться, а не когда они понадобятся. Почему мы это делаем? Не влияет ли это на производительность, или она настолько мала, что мы делаем это независимо от того, что люди - люди, и это делает код более понятным, возможно?
Просто, чтобы сообщить вам: есть также шаблон, называемый ленивой инициализацией. Вместо того, чтобы создавать все объекты одновременно, попробуйте отложить инициализацию до тех пор, пока объект не понадобится. [link] (http://en.m.wikipedia.org/wiki/Lazy_initialization) – Duc
@Duc Я заметил, что вы не можете делать ленивый, пусть только ленивый var. Зачем? И у меня сложилось впечатление, что давайте будем менее дорогостоящими, чем var, Итак, что лучше, давайте или lazy var? Возможно, это глупый вопрос/комментарий .. – KML
«Я заметил, что вы не можете лениться, пусть только ленивый вар» Это известное и прискорбное ограничение Swift, которое, я надеюсь, в конечном итоге будет преодолено. В то же время это не сложно реализовать сами, как я продемонстрирую в своей книге: http://www.apeth.com/swiftBook/ch03.html#EXlazy – matt