0

보기를 탐색하는 데 사용하는 싱글 톤을 사용하여 작은 iPhone 응용 프로그램을 개발했습니다. 여기 내 싱글 톤 클래스의 샘플 메서드가있다.iPhone : Tabview 컨트롤러 및 탐색 컨트롤러와 싱글 톤 사용

+ (void) loadMenuController:(NSMutableArray *)menuItems{ 
    MenuViewController *menuViewControler = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil]; 
    [menuViewControler setMenuItems:menuItems]; 
    RootViewController *root = (
    P2MAppDelegate *appDelegate = (P2MAppDelegate*) [[UIApplication sharedApplication] delegate]; 
    UINavigationController *navController = [appDelegate navigationController]; 
    [navController pushViewController:menuViewControler animated:YES]; 
    [menuViewControler release]; 
} 

이제 내 요구 사항이 탭보기 컨트롤러가 필요하도록 변경되었습니다. 내 응용 프로그램 대리자를 Tabview 컨트롤러로 변경할 수 있지만 여전히 각 탭 내부를 탐색해야합니다. 내 싱글 톤 클래스에서 탐색하는 방법을 알 수 없습니다.

안내해주세요. 제 질문이 명확하지 않은 경우 알려주십시오.

미리 감사드립니다.

감사합니다, Malleswar

+1

명확성을 위해 다시 포맷하십시오. 또한 "싱글 톤"은 한 단어입니다. –

답변

0

당신은 인터페이스를 관리하는 싱글 톤을 사용하지 않아야하고 당신이 한 경우에도, 당신은 클래스 메소드의 UI 로직을 넣어하지 않을 것입니다. 디자인을 처음부터 재고해야합니다.

정상적인 패턴은 네비게이션 컨트롤러 또는 탭바 컨트롤러를 응용 프로그램 대리인의 특성으로 유지하는 것입니다. 응용 프로그램 위임 자체는 모든 컨트롤러의 하위 클래스가 아니라 응용 프로그램 위임 프로토콜을 구현하는 NSObject 하위 클래스 여야합니다.

Xcode에서 Apple이 제공하는 템플릿 프로젝트를보고 탐색 및/또는 탭 주위에 구축 된 앱을 구성하는 빠르고 더러운 방법을 확인하십시오.

싱글 톤은 한 번에 단 하나의 클래스 인스턴스가 살아 있는지 확인해야 할 때만 사용해야합니다. UI를 관리하기 위해 자신의 싱글 톤을 만들 필요가 없습니다. 응용 프로그램 대리자는 그 자체로 단일 응용 프로그램 개체에 연결됩니다. 즉, 앱 대리인이 필요한 UI의 클래스에 대한 모든 제한을 제공합니다. 그 외에도 다른 싱글 톤이 필요하지 않습니다.

싱글 톤의 과다 사용은 위험하며 설계가 막 다른 방향으로 트랩되어 대량의 다시 쓰기가 발생할 수 있습니다. 그들을 고용하기 전에 신중하게 생각하십시오.

+0

답장을 보내 주셔서 감사합니다. 그것의 정말 좋은 설명. 실제로 웹 서비스에 액세스하려면 이벤트 기반 서비스 액세스를 사용했습니다. didReceiveResponse, didReceiveData, connectionDidFinishLoading처럼. 연결로드가 완료되면 단일 톤 클래스에 액세스하여 다음 컨트롤러를 표시합니다. 싱글 톤 클래스의 컨트롤러에 액세스하지 않도록 webservice에 액세스하는 방법을 제안 해 줄 수 있습니까? 미리 감사드립니다. – user304804

+0

예, 완료되는 응답을 알리는 델리게이트를 사용하십시오. –

+0

하지만 connectionDidFinishLoading까지 기다리지 않으려 고합니다. 이벤트 기반. 난 그냥 요청에 대한 메서드를 호출하고 그 메서드는 응답을 반환해야합니다. – user304804