Swift - Verspätetes Laden einer Eigenschaft, die erst später ausgeführt werden kann

Ich suche nach einer Möglichkeit, meine Variable faul zu laden, aber ich möchte sie später auf Null setzen und sie dann beim Abrufen neu erstellen können. Wenn zum Beispiel eine Speicherwarnung angezeigt wird, möchte ich alles löschen, was nicht verwendet wird, und es dann neu erstellen, wenn es später erneut benötigt wird.

Hier ist, wie ich es in Objective-C und meiner aktuellen Interpretation in kürzester Zeit machen würde. Ich bin mir nicht sicher, ob die Variable beibehalten wird, um die aktuelle Navigation beizubehalten.

Obj-C Implementierung

@property (strong, nonatomic, readwrite) UINavigationController *navController;

...

- (UINavigationController *)navController {
    if (!_navController) {
        UIStoryboard *tempStoryboard = [UIStoryboard storyboardWithName:@"SomeStoryboard" bundle:nil]; 
        _navController = [tempStoryboard instantiateInitialViewController];
    }

    return _navController;
}

...

- (void)didReceiveMemoryWarning
{
    if (![self.centerView isEqual:_navController]) {
         _navController = nil;
    }
}

Swift Implementierung

var navController :UINavigationController? {
    get {
        // There is no assignment to the a variable and I can't check if the current value is nil or it recalls the get method and hence re-create it if it is nil.
        let tempStoryboard = UIStoryboard(name: "Image", bundle: nil);
        let tempNavController: AnyObject = tempStoryboard.instantiateInitialViewController();

        return tempNavController as? UINavigationController;
    }
}

...

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

    if (!self.centerPanel.isEqual(navController)) {
        self.navController = nil;
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage