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 に決してアクセスしないように注意することができました。これは、構造体が作成時に未定義であるという事実によって、やや伴うようです。
「正しい」方法はありますか?