gpt4 book ai didi

ios - 检查 getter 中的 CGRect 是否为 null

转载 作者:IT王子 更新时间:2023-10-29 07:55:16 24 4
gpt4 key购买 nike

我正在尝试检查属性 getter 中的 CGRect 是否为 null,如果是,则默认加载一个值,但是,在我的 init 方法中,当我使用该属性,它为所有值返回零。

这是我的 setter/getter :

- (CGRect)frame
{
if(CGRectIsNull(_frame))
_frame = CGRectMake(0,0,60,60);
return _frame;
}

- (id)init
{
self = [super initWithFrame:self.frame];
if(self)
{
//do something
}
return self;
}

我不确定发生了什么,也不知道去哪里找。非常感谢任何帮助。

最佳答案

当您创建类的实例时,_frame 实例变量会自动初始化,甚至在调用 init 方法之前。由于 _frame 是一个 C 结构 (CGRect),它的内存被清空为全零。这会生成一个全为零的 CGRect

CGRectNull 是一个特殊的非零 CGRect。因此,您使用 CGRectIsNull() 进行的检查永远不会为真。

使用 CGRectIsEmpty 是对此更合适的检查。

关于ios - 检查 getter 中的 CGRect 是否为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088766/

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