Existe algum motivo para declarar ivars se você estiver usando propriedades exclusivamente no Objective-C?
Costumo usar propriedades exclusivamente em minhas classes, especialmente agora que você pode declarar propriedades em uma extensão de classe graças ao moderno tempo de execução do Objective-C 2.0 - eu uso esse recurso para criar propriedades "privadas".
Minha pergunta é se existe algum bom motivo para declarar mais ivars em uma interface de classe. Prefiro que minhas interfaces voltadas para o público sejam o mínimo e limpas possível, apenas revelando aspectos pertinentes da minha classe.
Por exemplo, eu tenderia a fazer o seguinte:
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
Deixando de lado as preferências de estilo de código, há algum problema em evitar ivars inteiramente como esse?