Статьи

Безопасность потоков

Теперь это действительно эпическое исследование эволюции того, как написать синглтон в Swift:

ПРАВИЛЬНЫЙ ПУТЬ АКА «ОДНА ЛИНИЯ SINGLETON (СЕЙЧАС С ДОКАЗАТЕЛЬСТВОМ!»)

 

class TheOneAndOnlyKraken {
    static let sharedInstance = TheOneAndOnlyKraken()
}

Мы знали об этом «правильном» методе написания синглетонов, но у нас не было доказательств, подтверждающих наши рассуждения, кроме постулирования… Поэтому я решил что-то с этим сделать и записал каждый способ инициализации синглтона и проверял их во время выполнения, используя точки останова , Проанализировав каждую трассировку стека на предмет совпадений, я наткнулся на что-то интересное — ДОКАЗАТЕЛЬСТВО!

* микрофон капля *

В последнее время появилось много других хороших сообщений в области многопоточности и безопасности памяти; мы рекомендуем проверить

Атомика в Objective-C

В этой статье рассказывается об использовании низкоуровневых элементарных функций ОС ( сравнение и замена , выборка и приращение ) для достижения одновременных алгоритмов ожидания и блокировки без блокировок, ориентированных на многопоточный режим, в ваших приложениях для 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, такие как очереди, группы, таймер, семафор и т. Д.»