Я разрабатываю довольно большое приложение, и при запуске он будет создавать сеансы с несколькими разными серверами. Поскольку они создают сеанс, который используется во всех частях приложения, это то, что я считаю лучшим в App Delegate.Сколько стоит AppDelegate?
Но проблема в том, что мне нужно, чтобы сеанс был представлен на экране. Я планирую иметь UIToolBar в нижней части главного меню, которое я не хочу покрывать индикатором выполнения, но охватываю UIView над ним. Так, как я вижу, я мог бы сделать это несколькими разными способами.
1) Попросите делегата приложения установить сеансы и сообщить о прогрессе в класс основного меню, чтобы он мог представлять его на панели выполнения (будут ли у меня какие-либо проблемы, если сеансы создаются в отдельном потоке?) ,
2) делегат приложения отображает главное меню (UIView с пучком кнопок и UIToolBar) и отслеживает его и отображает прогресс (я никогда ничего не показывал в App Delegate, но предполагаю, что вы можете это сделать, но его не рекомендуется) или
3) иметь делегата приложения, просто нажать главное меню и создать класс mainMenu для сеансов и отобразить индикатор выполнения.
4) Я думаю, что другой способ сделать это - создать сеансы в классе делегатов и назначить делегат на mainMenu, а не на себя (AppDelegate), хотя я никогда не использовал ничего другого, кроме самого себя, поэтому не уверен если это будет работать, или если я смогу закрыть поток (через вызов super, возможно?), как его запуск в AppDelegate, а не делегат класса.
Как я уже говорил, прежде чем сеансы создаются в классе в отдельном потоке, поэтому он не будет блокировать пользовательский интерфейс, и я думаю, что лучший способ - это первый, но я буду иметь проблемы с его запуском в отдельный поток, отчитываясь перед делегатом приложения, а затем отправляя это сообщение в mainMenu?
Надеюсь, что все имеет смысл, дайте мне знать, если вам нужно какое-либо уточнение. Любая информация ценится
Приветствия,
Извинения, если я пропущу, прочитали то, что вы написали, но вы говорите, что у вас один сингл в качестве диспетчера соединений, который инициирует сеанс? – Rudiger
Я просто сказал, что это будет похоже на синглтон, который проверяет, существует ли он, прежде чем возвращать указатель на себя. В этом случае он проверяет состояние соединения и, возможно, инициирует соединение, прежде чем возвращать дескриптор соединения для какой-либо другой части используемой программы. Абстрагируя состояние и процесс соединения, вы можете упростить себя и предоставить удобные функции, такие как «закрыть все соединения». –
Хммм, интересно. Я думаю, вы правы. Я займусь его проектированием и посмотрю, столкнулись ли я с какими-либо проблемами.Можете посмотреть, не повлияет ли кто-то другой на проблему – Rudiger