bsd*_*dfm 0 struct objective-c lazy-initialization ios
我不确定如何初始化一个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
Run Code Online (Sandbox Code Playgroud)
我意识到延迟初始化的主要好处是内存分配,但如果我这样做是为所有的类的属性,似乎清晰的使用相同的风格对我的所有属性设置的初始值.
我可以使用其他一些实例变量或属性来跟踪是否已访问self.origin,但这似乎......不顺利.在设置它之前,我可以注意永远不要访问self.origin,这似乎有点因为结构在创建时未定义.
有"正确"的方式吗?
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |