1 つの手法は、クラス拡張を宣言することです。.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
または暗黙のプライベートivarにアクセスするだけです
[_myObject doSomethingCool];
_myObject.thing = something;
または、生成されたアクセサーによって提供された KVC を使用します
[myViewControllerInstance addObserver:someOtherObject forKeyPath:@"myObject" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL]
その後someOtherObject
、フォームのメッセージを受け取ります
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
要するに。あなたがやっていることは間違っていませんが、もっと多くのことを行うことができる他のテクニックやツールを探ることができます.