Tiendo a utilizar propiedades exclusivamente en mis clases, especialmente ahora que puede declarar propiedades en una extensión de clase gracias al moderno tiempo de ejecución de Objective-C 2.0: uso esta característica para crear propiedades "privadas".¿Hay alguna razón para declarar ivars si está utilizando propiedades exclusivamente en Objective-C?
Mi pregunta es si ya existe alguna buena razón para declarar ivars en una interfaz de clase. Prefiero que mis interfaces públicas sean lo más mínimas y limpias posible, solo revelando aspectos de mi clase que sean pertinentes.
Por ejemplo, yo tendería a hacer lo siguiente:
MyClass.h
:
@interface MyClass : NSObject
@property (nonatomic, copy) NSString * publicString;
@property (nonatomic, copy, readonly) NSString * readOnlyString;
@end
MyClass.m
:
@interface MyClass()
@property (nonatomic, copy, readwrite) NSString * readOnlyString;
@property (nonatomic, copy) NSString * privateString;
@end
@implementation MyClass
@synthesize publicString = publicString_;
@synthesize readOnlyString = readOnlyString_;
@synthesize privateString = privateString_;
- (void)init
{
self = [super init];
if (self != nil)
{
self.publicString = @"Public String";
self.readOnlyString = @"Read-Only String";
self.privateString = @"Private String";
}
return self;
}
- (void)dealloc
{
[publicString_ release];
[readOnlyString_ release];
[privateString_ release];
[super dealloc];
}
@end
preferencias de estilo de código a un lado, ¿hay algún problema con evitando Ivars enteramente ¿Me gusta esto?
¿Por qué no utiliza el comando po en la consola de depuración? –
Sí, pero me duele pero uso GDB directamente porque no admite la sintaxis de puntos. – LucasTizma
es tan cierto :( –