Один объект MKNetworkEngine при использовании MKNetworkKit
Я просто переключился на использование MKNetworkKit, и меня смущает, должен ли я создавать один объект MKNetworkEngine при запуске приложения и использовать его всякий раз, когда мне нужно сетевое соединение, или мне нужно каждый раз создавать новое?
Если бы мне нужно было создать только один и использовать его на протяжении всего жизненного цикла приложения, я бы предположил, что MKNetworkKit создаст синглтон, но, похоже, этого не происходит (не то, что я вижу).
С другой стороны, кажется неудобным выделять / инициализировать MKNetworkEngine каждый раз, когда я хочу выполнить простой запрос GET.
Что-то кажется неправильным, поэтому мне интересно, я правильно его использую.
2 ответа
Этьен678 прав. Вы должны создать движок для каждого веб-сервера и установить глобальные заголовки (например, gzip) и другие, необходимые для этого сервера в движке.
Когда вы ставите в очередь операцию, к движку автоматически добавляются эти заголовки.
Вы создаете один движок для каждого веб-сервиса, который вы намереваетесь вызывать, и сохраняете его как сильное свойство в делегате приложения
(facebook = один движок / твиттер = один движок / flickr = один движок)
Создатель Mugunth Kuma пишет это:
MKNetworkEngine - это псевдо-синглтон-класс, который управляет сетевой очередью в вашем приложении. Это псевдо-синглтон, в том смысле, что для простых запросов вы должны использовать методы MKNetworkEngine напрямую. Для более мощной настройки вы должны создать подкласс. Каждый подкласс MKNetworkEngine имеет свой собственный объект Reachability, который уведомляет его об уведомлениях о достижимости сервера. Вы должны рассмотреть возможность создания подкласса MKNetworkEngine для каждого уникального сервера REST, который вы используете. Это псевдо-синглтон в том смысле, что каждый отдельный запрос в любом из его подклассов проходит через одну-единственную очередь.