viewcontrollers간에 데이터를 전송하는 데 문제가 있습니다. 이제 저는 작은 응용 프로그램을 만들고 있습니다. 주요 viewcontroller가 있으며,이 viewcontroller 사용자는 다른 모든 viewcontroller가 인터넷에서 데이터를 가져 오는 데 사용할 일부 전역 데이터를 변경할 수 있습니다. 따라서 글로벌 데이터가 변경되면 다른 뷰 컨트롤러에 데이터를 업데이트 할 필요가 있습니다.iOS에서 viewController를 관리하는 방법
질문은 입니다. 글로벌 데이터가 변경되면 다른 뷰 컨트롤러에 어떻게 알릴 수 있습니까??
나는이 문제를 해결하기 위해 NSNotificationCenter를 사용해야한다는 것을 알고 있지만 모든 viewcontrollers에 대한 외국인과 같은 느낌이 들었다.
내가하고 싶은 일은 ViewControllerManager를 추가하여 모든 viewController를 관리하는 것입니다. 첫째, 관리자에게 전역 데이터를 사용해야하는 모든 뷰 컨트롤러를 추가합니다. 그런 다음 글로벌 데이터가 변경되면 관리자를 통해 이러한 뷰 컨트롤러를 찾고 전역 데이터를 직접 업데이트하도록 알릴 수 있습니다.
이것은 내 @interface입니다.
@interface ViewControllerManager : NSObject
+ (ViewControllerManager *)sharedManager;
- (void)addViewController: (UIViewController *)viewController;
- (void)removeViewController: (UIViewController *)viewController;
- (void)removeViewControllerByClass: (Class)aClass;
- (UIViewController *)viewControllerByClass: (Class)aClass;
- (NSArray *)viewControllersByClass: (Class)aClass;
//get viewcontrollers who can response to selector, so I can send them this message.
- (NSArray *)viewControllersResponseTo: (SEL) selector;
//get current visible viewcontroller.
@property (nonatomic, retain) UIViewController * visibleViewController;
@end
그것은이 관리자를 통해 잘 내가 원하는의 ViewController를 얻을 수 있고, 내가 viewcontrollers 사이에 쉽게 글로벌 데이터를 전송할 수 있습니다, 그러나 문제는 내가 어떻게 메모리를 관리하는 를 모르는되어 작동
올바르게, 방법 [ViewControllerManager addViewController: ]
에서, 나는 viewController를 유지하지만,이 viewController는 결코 dealloc이 될 수 없으므로,이 뷰티 롤러는 결코 해제되지 않습니다. ...
감사합니다 당신의 도움을 위해, 내가 중재자 패턴에 대한 자세한 내용을 공부합니다. – xiaogang