Я знаю, что это довольно старый вопрос, но кажется, что он никогда не устареет, поскольку Facebook долгое время не обновлял руководство по QuickStart.
Итак, вот решение для Swift 4.x.
В didFinishLaunching:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance()?.application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
В открытом URL:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let handled = FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[.sourceApplication] as? String, annotation: options[.annotation])
return handled
}
Почему итераторы лучше индексов?
Однако, если игнорировать типы контейнеров, которые не поддерживают произвольный доступ (список, набор и т. д.), итераторы по-прежнему предлагают
Модульность - вот ответ. Предположим, вы заключили свою логику в вызов функции (хорошая практика). В этом случае создание итератора приема сделает его универсальным, чтобы он мог работать с массивом стиля C (указателем),
Я говорю о его переносимости между контейнерами.
Если вы пишете код с использованием векторов и используете индекс для итерации, тогда код не может быть легко изменен на другие контейнеры позже.
typedef std::vector<int> myContainer; //only change here for std::list
for ( myContainer::iterator iter = actualContainer.begin();
iter != actualContainer.end();
++iter)
{}
В вышеизложенном код, если вы хотите перейти от вектора к списку, это очень легко возможно. Если бы вы использовали индекс, это было бы невозможно.
В противном случае, поскольку вектор использует итераторы произвольного доступа, он должен быть таким же. (индекс или итератор все в порядке)
Этот вопрос недавно был задан мной относительно производительности. Возможно, вы захотите взглянуть на ответы, которые я получил.
Проверьте следующую ссылку: Итераторы против индексов
Обсуждение в основном касалось производительности, которая, как оказалось, зависела от платформы, с небольшими изменениями в каждая платформа.