cri*_*ald 25 null ios cgrect cgrectmake ios6
我试图检查a CGRect是否null在我的属性getter中,如果是,默认情况下加载一个值,但是,在我的init方法中,当我使用该属性时,它为所有值返回零.
这是我的吸气鬼:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么,在哪里看.任何帮助深表感谢.
rma*_*ddy 53
创建类的_frame实例时,即使在init调用方法之前,也会自动初始化实例变量.由于_frame是一个C-struct(CGRect),它的内存被清除为全零.这导致a CGRect全部为零.
CGRectNull是一种特殊的,非零的CGRect.所以你的支票使用CGRectIsNull()永远不会成真.
使用CGRectIsEmpty是一个更合适的检查.
Anu*_*das 11
尝试
- (CGRect)frame
{
if (CGRectIsEmpty(_frame))
_frame = CGRectMake(0,0,60,60);
return _frame;
}
Run Code Online (Sandbox Code Playgroud)