ios ios6 null cgrect cgrectmake

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; }