gpt4 book ai didi

objective-c - C 结构的延迟初始化

转载 作者:行者123 更新时间:2023-11-28 18:42:43 24 4
gpt4 key购买 nike

我不确定如何初始化 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,这似乎是由于结构在创建时未定义这一事实而引起的。

有没有“正确”的方法?

最佳答案

objc 类的所有成员在创建时都将初始化为零(即使是结构)。我不明白你关于内存分配的观点。该空间是为结构保留的(您没有存储指向它的指针)。无论您是否为其赋值,它都需要相同的空间。

关于objective-c - C 结构的延迟初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9253436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com