Ответ в первую очередь зависит от типа приложения, которое вы создаете. Если вы собираетесь получать доступ к базе данных только изредка, тогда можно открывать / закрывать по мере необходимости, но если приложение будет часто использовать БД, скажем, потому что содержимое вашего приложения полностью управляется базой данных, тогда вам действительно следует откройте соединение с БД при запуске приложения и закройте его после его завершения.
В моем последнем приложении я начал с передачи соединения с БД в качестве указателя, когда это было необходимо, и позже изменил мою архитектуру, чтобы класс, который первоначально открыл БД, составной из AppDelegate, также был классом для обработки всех запросов и ответы из БД. Работал хорошо и прост в обслуживании, для меня это равносильно победе.