Вы можете определить синтезированное "частное" свойство (поместите его в файл .m
)
@interface ClassName ()
// Declared properties in order to use compiler-generated getters and setters
@property (nonatomic, strong <or whatever>) NSObject *privateSomeObject;
@end
, а затем вручную определите геттер и сеттер в «публичной» части ClassName
(.h
и @implementation
part), например,
- (void) setSomeObject:(NSObject *)someObject {
self.privateSomeObject = someObject;
// ... Additional custom code ...
}
- (NSArray *) someObject {
return self.privateSomeObject;
}
Теперь вы можете получить доступ к «свойству» someObject
как обычно, например, object.someObject
. Вы также получаете преимущество автоматически генерируемой retain
/ release
/ copy
, совместимость с ARC и практически не теряете поточную безопасность.