Привет, когда вы делаете ленивый экземпляр, если вы делаете это в сеттер или геттер? Я слышал, что вы делаете это в getter, но что, если свойство задано до того, как оно вызвано геттером? Означает ли это, что свойство все еще ноль? Кроме того, если вы ленитесь создать экземпляр в геттере, и кто-то вызывает функцию setter, но вы не ленитесь создавать в сеттере, что такое значение свойства?Ленивый экземпляр в сеттер или геттер?
0
A
ответ
0
Я думаю, что геттер - лучшее место. Если сеттер вызывается первым - ну, тогда он будет устанавливать свойство на то, что его просят сделать, и никто не заботится о том, каково было предыдущее значение свойства.
- (id)foo
{
if (_foo == nil) {
_foo = [[Foo alloc] init];
}
return _foo;
}
- (void)setFoo:(id)f
{
if (_foo != f) {
[_foo release]; // Yay, messaging nil is safe!
_foo = [f retain];
}
}
Вы можете показать нам свой код? слишком абстрактно на данный момент – Raptor
Это не связано ни с Xcode, ни с iOS 5, ни с iOS 6. –