Swift - Ленивая загрузка свойства, которое может быть сделано ноль позже

Я ищу способ ленивой загрузки моей переменной, но я хочу иметь возможность сделать ее нулевой позже, а затем воссоздать ее при получении. Например, в том случае, если в памяти есть предупреждение, я хочу очистить все, что не используется, а затем заново создать его при необходимости позже.

Вот как я это сделаю в Objective-C и мою текущую интерпретацию в Swift. Я не уверен, что он сохраняет переменную для сохранения текущей навигации.

Реализация Obj-C

@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;
    }
}

Быстрая реализация

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;
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос