Ленивая загрузка в Objective-C - Следует ли мне вызывать сеттер из получателя?

Это небольшая деталь, но каждый раз, когда я лениво загружаю что-то, я зацикливаюсь на этом. Оба эти метода приемлемы? Либо лучше? Предположим, что переменная имеет свойство сохранения.

Метод №1

(AnObject *)theObject{
    if (theObject == nil){
        theObject = [[AnObject createAnAutoreleasedObject] retain];
    }
    return theObject;
}

Метод №2

(AnObject *)theObject{
    if (theObject == nil){
        self.theObject = [AnObject createAnAutoreleasedObject];
    }
    return theObject;
}

Во-первых, я не уверен, можно ли получить доступ к другой функции доступа внутри средства доступа (не понимаю, почему нет, хотя). Но похоже, что установка переменной класса без прохождения через сеттер может быть столь же плохой, если сеттер делает что-то особенное (или если свойство изменяется на что-то, кроме сохранения, и геттер не проверяется).

8
задан MattyG 7 February 2012 в 22:37
поделиться