Купа (heap) Купа містить всі об'єкти, створені у вашому додатку, незалежно від того, який потік створив об'єкт. До цього належать і обгортки примітивних типів (наприклад, Byte, Integer, Long тощо).
Купа використовується для динамічного виділення пам'яті . На відміну від стека, пам'ять у купі може бути виділена та звільнена у довільному порядку, що робить її придатною для зберігання об'єктів, розмір чи час життя яких не можуть бути визначені під час компіляції. Керування купою здійснюється за допомогою автоматичного підрахунку посилань (ARC) у Swift.
Стек: Змінні виділені в стеку зберігаються безпосередньо у пам'яті, доступ до пам'яті дуже швидкий. Виділення цієї пам'яті відбувається під час компіляції програми; Використовується для статичного виділення пам'яті.
Side table залишається у пам'яті поки що на об'єкт є weak посилання. Адже саме через side table відбувається взаємодія із weak змінними. А точніше через екземпляр WeakReference, у якому зберігається покажчик на side table.
Купа – це сховище пам'яті, також розташоване в ОЗУ, яке допускає динамічне виділення пам'яті і не працює за принципом стека: це просто склад для ваших змінних. Коли ви виділяєте в купі ділянку пам'яті для зберігання змінної, до неї можна звернутися не тільки в потоці, але й у всьому додатку.
Кортеж – це група значень різних типів даних. Припустимо, нам необхідно зберігати інформацію про назву та ціну продукту, ми можемо створити кортеж з одним значенням для зберігання назви (рядок) та іншим значенням для зберігання ціни (число з плаваючою точкою).
Swift використовує автоматичний підрахунок посилань (ARC) під капотом для визначення часу життя об'єктів та автоматичного звільнення об'єктів, що не використовуються. . Swift має три різні типи підрахунку посилань. Вони підраховують, скільки інших екземплярів використовують об'єкт. І коли він не потрібний, він звільняється.
У Swift ключове слово static використовується для визначення статичної функції чи властивості . Статичні функції корисні для спільного використання функціональності у всіх екземплярах типу. Наприклад, можна створити статичну функцію в математичному класі, яка обчислює квадрат числа.