Один метод, чтобы объявить расширение класса в .m
@interface MyViewController() {
NSInteger someNumber;
NSObject *myObject;
}
@end
@implementation MyViewController
-(void)someMethod {
someNumber++;
}
@end
Предполагая, что ARC
вы получите сильные ссылки с типами объектов. Это не отличается от того, что вы делали. Его просто разделяющий интерфейс и реализация более четко и также поддаются таким узорам, как Private Implementation
Однако со свойствами вы получаете возможность манипулировать аксессуарами, а также получаете KVC
.
@interface MyViewController() {
NSInteger someNumber;
}
@property (copy,readwrite,nonatomic) NSObject *myObject;
@end
@implementation MyViewController
-(void)someMethodWhichNeedsACopy:(NSObject *)aobj {
self.myObject = aobj; //free copies , no smudging!
}
@end
И в дополнение позволяет переопределить
-(void)setMyObject:(NSObject *)aobj
-(NSObject *)myObject
или просто получить доступ к неявной частному Ивар
[_myObject doSomethingCool];
_myObject.thing = something;
или использовать КВЦ дано вам сгенерированных аксессорах
[myViewControllerInstance addObserver:someOtherObject forKeyPath:@"myObject" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL]
после w hich someOtherObject
будет получать сообщения от формы
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Вкратце. То, что вы делаете, не так, но есть другие методы и инструменты для изучения, с помощью которых вы можете делать больше вещей.
Объявление переменных в файле .h и создание его как @private - это более старый способ кодирования. Имейте эти переменные в вашей реализации .m на самом деле, это текущий отраслевой стандарт. – nik