Теперь это действительно эпическое исследование эволюции того, как написать синглтон в Swift:
ПРАВИЛЬНЫЙ ПУТЬ АКА «ОДНА ЛИНИЯ SINGLETON (СЕЙЧАС С ДОКАЗАТЕЛЬСТВОМ!»)
class TheOneAndOnlyKraken { static let sharedInstance = TheOneAndOnlyKraken() }
Мы знали об этом «правильном» методе написания синглетонов, но у нас не было доказательств, подтверждающих наши рассуждения, кроме постулирования… Поэтому я решил что-то с этим сделать и записал каждый способ инициализации синглтона и проверял их во время выполнения, используя точки останова , Проанализировав каждую трассировку стека на предмет совпадений, я наткнулся на что-то интересное — ДОКАЗАТЕЛЬСТВО!
* микрофон капля *
В последнее время появилось много других хороших сообщений в области многопоточности и безопасности памяти; мы рекомендуем проверить
В этой статье рассказывается об использовании низкоуровневых элементарных функций ОС ( сравнение и замена , выборка и приращение ) для достижения одновременных алгоритмов ожидания и блокировки без блокировок, ориентированных на многопоточный режим, в ваших приложениях для iOS / OSX.
Он вводит несколько классов, которые абстрагируют мрачные детали некоторых атомарных функций, предоставляемых libkern / OSAtomic.h, в концептуально более простые компоненты, использующие типы Foundation…
Сильный, слабый и незнакомый — сортировка ARC и Swift
Я хотел перестать быть неуверенным в отношении последствий ввода одного из этих трех слов перед объявлением переменных / констант, поэтому я, наконец, поднял документацию Apple по ARC и начал пытаться переварить семантику. Эта статья — попытка поделиться тем, что выяснилось в моем мозгу в отношении ARC и Swift…
«Слабый, сильный, неизвестный, о мой!» — Справочник по ссылкам в Swift
Я часто беспокоюсь о сохранении циклов в моем коде. Я чувствую, что это общая проблема среди других. Я не знаю о вас, но мне кажется, что я постоянно слышу «Когда я должен использовать слабый? И что, черт возьми, эта «незнакомая» чушь ?! » Проблема, которую мы находим, заключается в том, что мы знаем, что мы используем сильные, слабые и неизвестные спецификаторы в нашем быстром коде, чтобы избежать циклов сохранения, но мы не совсем знаем, какой спецификатор использовать. К счастью, я знаю, что они И когда их использовать!
Демистификация Retain Cycles в ARC
Сохранение циклов в ARC похоже на японский фильм ужасов. Когда вы начинаете как разработчик Cocoa / Cocoa Touch, вы даже не задумываетесь об их существовании. Затем однажды одно из ваших приложений начинает падать из-за утечек памяти, и вдруг вы начинаете осознавать их и начинаете видеть циклы, похожие на призраков, повсюду. Проходят годы, и вы учитесь жить с ними, обнаруживать их и избегать их … но последний страх все еще там, в поисках его шанса проникнуть внутрь.
Совет: Избегайте сохранения циклов без исполнения танца от сильного к слабому , передавая параметры блока вместо того, чтобы помнить о слабом захвате.
И вспомогательные структуры Grand Central Dispatch в Swift в последнее время кажутся весьма интересными; вот некоторые для вас, чтобы проверить:
Async : «Синтаксический сахар в Swift для асинхронных отправлений в Grand Central Dispatch».
Эки : «это среда для легкого управления параллелизмом в ваших приложениях, которая объединяет мощный API Grand Central Dispatch»
GCDKit : «Grand Central Dispatch упрощена с помощью Swift».
iDispatch : «Простая в использовании оболочка над GCD для iOS».
KillerRabbit : «Модуль THGDispatch, включает биты GCD, такие как очереди, группы, таймер, семафор и т. Д.»