Я склонен использовать свойства исключительно в своих классах, особенно теперь, когда вы можете объявлять свойства в расширении класса благодаря современной среде выполнения Objective-C 2.0 - я использую эту функцию для создания "частных" свойств.
У меня вопрос: есть ли веская причина когда-либо объявлять ivars в интерфейсе класса? Я предпочитаю, чтобы мои общедоступные интерфейсы были минимальными и чистыми, насколько это возможно, раскрывая только те аспекты моего класса, которые уместны.
Например, я бы хотел сделать следующее:
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
За исключением настроек стиля кода, есть ли какие-либо проблемы с обходом использования иваров, как это?