Я не уверен, как инициализировать свойство класса, которое является структурой C или базовым типом до iOS5. Это то, что я сделал бы, если бы имел дело с классом, но я не знаю, что я могу проверить, чтобы увидеть, происходит ли это впервые при обращении к структуре, так как они не определены при создании:
@interface GraphView : UIView
@property (nonatomic) CGPoint origin;
@end
@implementation GraphView
@synthesize origin = _origin;
- (CGPoint)origin
{
if (WHAT?) {
_origin = CGPointMake(self.bounds.origin.x + self.bounds.size.width/2,
self.bounds.origin.y + self.bounds.size.height/2);
}
return _origin;
}
@end
Я понимаю, что основное преимущество ленивой инициализации заключается в распределении памяти, но если я делаю это для всех свойств, которые являются классами, то, кажется, наиболее разумно использовать один и тот же стиль для установки начальных значений для всех моих свойств.
Я могу использовать некоторую другую переменную или свойство экземпляра, чтобы отслеживать, был ли получен доступ к self.origin, но это кажется ... не гладким. Я мог бы позаботиться о том, чтобы никогда не получить доступ к self.origin до того, как я его установлю, что кажется мягко связанным с тем фактом, что структуры не определены при создании.
Есть ли "правильный" путь?