ios - Compruebe si CGRect nulo en getter
ios6 null (3)
Estoy tratando de verificar si un CGRect
es null
en mi CGRect
propiedades y si lo es, cargar un valor por defecto, sin embargo, en mi método de inicio, cuando uso la propiedad, devuelve cero para todos los valores.
Aquí está mi captador:
- (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;
}
No estoy seguro de qué está pasando y dónde mirar. Cualquier ayuda es muy apreciada.
Aquí está una respuesta actualizada para Swift 4. Usted puede simplemente usar la propiedad booleana isNull de isNull
para verificar CGRectNull ahora:
let someRect = CGRect.null
print(someRect.isNull) // true
Cuando creas una instancia de tu clase, la variable de instancia _frame
se inicializa automáticamente, incluso antes de llamar al método init
. Como _frame
es una estructura en C ( CGRect
), su memoria se borra a todos los ceros. Esto resulta en un CGRect
con todos los valores de cero.
CGRectNull
es un CGRectNull
especial que no es cero. Por lo tanto, su cheque utilizando CGRectIsNull()
nunca será verdadero.
Usar CGRectIsEmpty
es una verificación más adecuada para esto.
Tratar
- (CGRect)frame
{
if (CGRectIsEmpty(_frame))
_frame = CGRectMake(0,0,60,60);
return _frame;
}