2010-05-19 6 views
2

저는 꽤 큰 응용 프로그램을 설계하고 있으며 시작시 몇 가지 다른 서버로 세션을 생성합니다. App의 모든 부분에서 사용되는 세션을 만들고 있기 때문에 App Delegate에서 가장 좋을 것 같았습니다.AppDelegate는 어느 정도의 작업을 수행해야합니까?

하지만 문제는 세션 진행을 화면에 표시해야한다는 것입니다. 진행 표시 줄로 덮어 쓰지 않고 위의 UIView를 감추고 싶지 않은 주 메뉴의 맨 아래에 UIToolBar를 가질 계획입니다. 그래서 그것을 보는 방식으로 몇 가지 방법으로 할 수 있습니다.

1) 응용 프로그램 대리인이 세션을 설정하고 진행률 표시 줄에 표시 할 수 있도록 주 메뉴 클래스에 진행 상황을보고하게하십시오 (세션이 별도의 스레드에서 생성 된 경우이 작업을 수행하는 데 문제가 있습니까?). ,

2) App Delegate가 주 메뉴 (UIView에 여러 개의 버튼과 UIToolBar가 있음)를 표시하고 진행 상황을 추적하고 표시하도록합니다. (App Delegate에는 아무 것도 표시하지 않았지만이를 수행 할 수 있다고 가정하지만 권장하지 않음) 또는

3) App Delegate가 주 메뉴를 누르고 mainMenu 클래스에서 세션을 만들고 진행률 표시 줄을 표시하게하십시오.

4) 다른 방법은 대리자 클래스에서 세션을 만들고 대리자를 자체 (AppDelegate)가 아닌 mainMenu로 설정하는 것입니다. 이 작업이 작동하거나 클래스의 대리자가 아닌 AppDelegate에서 실행중인 스레드를 닫을 수 있는지 (super를 아마도 호출하는 등)?

세션이 별도의 스레드에서 클래스로 만들어지기 전에 내가 말했듯이 UI를 잠그지 않을 것이므로 가장 좋은 방법은 처음이라고 생각하지만 문제가 생길 것입니다. 별도의 스레드, 다시 응용 프로그램 대리인에보고 다음 mainMenu보기로 그 메시지를 보내는?

나는 모든 것이 의미가 있기를 바랍니다. 더 이상의 설명이 필요하면 알려주세요. 모든 정보는 아마도 연결의 상태가 앱의 기능에 영향을 줄

답변

1

건배

을, 감사합니다. 아마도 연결을 시작할 수 있고 연결 상태를 유지하고 상태에 대해 질의를받을 때 응답 할 수있는 연결 관리자 개체로 생각할 수 있습니다. 싱글 톤 객체가 기존 객체를 반환하거나 존재하지 않는 객체를 새로 생성하고 반환하는 것과 같은 방식으로 연결 관리자는 "연결 만들기"메서드가 필요하지 않습니다. "처리"를 얻지 않아도됩니다. 열어 보면 그렇게 만들 수 있습니다.

상태를 메인 화면에보고해야한다고 언급합니다. 백그라운드에서 불확실한 시간에 작업을 수행 할 수있는 관리자 객체 (백그라운드에서 준비, 사용 중, 멀리 있거나 단순하게 깨진 호스트에 대한 연결 열기)를 수행 한 다음 UI가 진행될 수 있도록 주 스레드로 진행 상황을보고합니다. 업데이트 됨 (보조 스레드에서 UIKit 액세스가 없음을 기억하십시오)이 이상적이며보기가 분명하게 유지됩니다.

+0

내가 쓴 내용을 읽지 않으면 사과하지만 세션을 시작하는 연결 관리자로 싱글 톤을 사용한다고 말하는가? – Rudiger

+0

나는 포인터가 자신에게 포인터를 반환하기 전에 존재하는지 검사하는 싱글 톤과 같을 것이라고 말하고 있었다. 이 경우 연결 상태를 확인하고 프로그램의 다른 부분을 사용하기 위해 연결 핸들을 반환하기 전에 연결을 초기화 할 수 있습니다. 연결 상태와 프로세스를 추상화하면 더 쉽게 작업 할 수 있으며 "모든 연결 닫기"와 같은 편리한 기능을 제공 할 수 있습니다. –

+0

음, 재미있다. 그 쪽이 맞는 거 같아요. 나는 그것을 디자인하고 내가 어떤 문제에 부딪 치는지를 살펴볼 것이다.다른 사람이 문제에 무게를다는 지 볼 수 있습니다. – Rudiger