2015-03-27 3 views
0

У меня есть свойство, которое мне не всегда нужно, поэтому я не хочу, чтобы его экземпляр на представлении загружал или метод init (я думаю). Я полагаю, что я мог бы взять ленивое инстанцирование подход и сделать инициализацию в поглотителе для свойства ...Устанавливает ли свойство в пользовательском getter хорошую или плохую идею?

-(PropertyType *)myProperty { 
    if (!_myProperty) 
     self.myProperty = [[PropertyType alloc] init]; 
    return _myProperty; 
} 

Я просто чувствую, что это немного Hacky. Но этого может и не быть. Есть идеи??

-Спасибо!

+0

Это, безусловно, поможет вам http://stackoverflow.com/questions/19276229/overriding-property-getters-with-lazy-loading-in-objective-c –

+0

Спасибо @anishparajuli, но это вопрос больше об использовании этот метод с инкапсуляцией, а не преимуществами/недостатками использования этой техники в целом. – jgvb

ответ

0

Да, это очень распространено и вполне приемлемо. Вы можете увидеть это в Apple's documentation.

В связи с этим обычно используется singleton model.

Как всегда, вы должны быть осторожны, чтобы избежать premature optimization и делать такие вещи исключительно как потенциальное улучшение производительности.