UIViewController가로드 될 때 인스턴스가 생성되는 클래스가 있습니다. 특정 이벤트가 발생할 때 ViewController를 업데이트 할 수 있으려면이 클래스의 인스턴스가 필요합니다.Objective-C 모델보기 통신
AViewController.h
@property (weak, nonatomic) IBOutlet UIProgressView *progress;
@Property (strong, nonatomic) ClassB *classB
-(void)incrementProgressBar: (NSNumber *)currentProgress;
AViewController.m
-(void)viewDidLoad
{
_classB = [ClassB alloc]initWithNonReleventVariable:variable];
[_classB setInstanceViewController:self]
}
-(void)incrementProgressBaar: (NSNumber *)currentProgress;
{
[_progressBar setProgress:[currentProgrsss floatValue] animated:YES];
}
ClassB.h
@property (strong, nonatomic)AViewController *avc;
@property (nonatomic) double progress;
ClassB.m
-(void)incrementExerciseProgress
{
//do some calculations here
[self.avc incremtProgressBar:[NSNumber numberWithDouble:_progress]];
}
: 이것은 내가이 달성 한 방법이다
이 코드를 다른 사람으로부터 상속 받았으며 제대로 작동합니다. 그래서 내 질문은 이것이다 : 이것을 달성하는 "올바른"방법인가? 이것이 최선의 방법인지 알고 싶습니다. 그렇지 않으면 내가 그것을 고칠 수있는 일은 그렇게했다. 나는이 프로젝트에 약간의 시간을 할애하여 가능한 한 올바르게 수행하고 싶습니다. 감사.
여기서 ARC 강력한 참조주기를 만들었습니다. 'classB'는'classB'를 강하게 나타내는'avc'를 강력하게 가리 킵니다. 이로 인해 메모리 누수가 발생하고 의도하지 않은 동작이 발생할 수 있습니다. 이 두 가지 속성 중 하나는이 사이클을 피하기 위해 '약함'이 아니라 '강함'이되어야합니다. –
@AaronBrager 네 말이 맞아. 나는 그것을 고쳤다. 고맙습니다. – MichelleJS