하나의 기술은 객체 유형 강한 참조를 얻을 것이다 ARC
가정하고 .m
@interface MyViewController() {
NSInteger someNumber;
NSObject *myObject;
}
@end
@implementation MyViewController
-(void)someMethod {
someNumber++;
}
@end
내에서 클래스 확장을 선언하는 것입니다. 그게 네가 한 짓이 아니야. 인터페이스와 구현을보다 명확하게 구분하고 패턴을 제공합니다. 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;
또는 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
등의 메시지를 받게됩니다. 당신이하고있는 일은 잘못이 아니지만 더 많은 것을 할 수있는 다른 기술과 도구가 있습니다.
.h 파일의 변수를 선언하고 @private로 지정하는 것은 기존의 코딩 방법입니다. 사실, 현재의 업계 표준 인 .m 구현에 해당 변수가 있습니다. – nik