SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
iOS Internship 2014
Управление памятью
Oсновы управления памятью
Manual Retain-Release
Automatic Reference Counting
Лекция 2
Управление
памятью
Управление памятью
Управление памятью
● Динамическое выделение памяти,
● Использование выделенной памяти,
● Высвобождение выделенной памяти.
Управление памятью
Управление памятью
Проблемы ручного управления памятью
● Освобождение (перезапись) данных,
которые все еще используются,
● Исполнение программы без освобождения
памяти, занятой долее ненужными данными.
Управление памятью
Управление памятью
Виды управления памятью
● Ручное управление:
○ new, calloc, malloc, delete, free,
○ Smart pointers (Boost / STL*),
○ Manual Retain-Release (MRR).
● Автоматическое управление:
○ Garbage collection (GC),
○ Automatic Reference Counting (ARC)
* “Умные” указатели стали частью STL только со вступлением в силу
стандарта c++11.
Управление памятью
Управление памятью
Эффективное управления памятью
Использование номинально необходимого объема
выделяемой памяти.
Достигается за счет:
● Выделения памяти по необходимости,
● Совместного использования данных,
● Своевременного удаления долее ненужных
объектов (данных).
Управление памятью
Управление памятью
Диагностика управления памятью
● Clang Static Analyzer,
● Developer Tools Instruments
Управление памятью
Управление памятью
Manual Retain-Release
Управление памятью
Управление памятью
Основные правила управления памятью
К управлению памятью следует подходить с
позиций “владения” и “объектных графов”.
* Объектный граф - группа объектов, которые
соединены в сеть по средствам установления тех
или иных отношений между ними.
Управление памятью
Управление памятью
Основные правила управления памятью
Вы владеете любым объектом, который
создаете.
Для создания объекта используются методы,
начинающиеся с “alloc”, “new”, “copy”,
“mutableCopy”.
Управление памятью
Управление памятью
Основные правила управления памятью
Вы можете завладеть объектом по средствам
отправки сообщения retain.
1. Сохранить переданный объект в качестве
значения некоторого свойства,
2. Предохранить объект от преждевременного
уничтожения.
Управление памятью
Управление памятью
Основные правила управления памятью
Вы должны отказаться от права владения
объектом тогда, когда он долее не нужен.
Для отказа достаточно послать объекту одно из
сообщений release или autorelease.
Управление памятью
Управление памятью
Пример
{
Pupil *aPupil = [[Pupil alloc] init];
// ...
NSString *name = aPupil.name;
// ...
[aPupil release];
aPupil = nil;
}
Управление памятью
Управление памятью
Пример
- (NSString *)fullName
{
NSString *fullName =
[[[NSString alloc] initWithFormat:@”%@ %@”,
self.surname, self.name] autorelease];
return fullName;
}
Управление памятью
Управление памятью
Пример
- (NSString *)fullName
{
NSString *fullName =
[NSString stringWithFormat:@”%@ %@”,
self.surname, self.name];
return fullName;
}
Управление памятью
Управление памятью
Основные правила управления памятью
Вы не владеете объектами, которые вам
вернули по ссылке.
Управление памятью
Управление памятью
Основные правила управления памятью
Ни при каких условиях вы не должны
отказываться от прав на владение тем или
иным объектом, если вы им не владеете.
Управление памятью
Управление памятью
Пример
{
NSError *error = nil;
NSString *string =
[[NSString alloc]
initWithContentsOfFile:<#file name#>
encoding:NSUTF8StringEncoding
error:&error];
if (string == nil) {
// Handle the error ...
}
// ...
[string release];
string = nil;
}
Управление памятью
Управление памятью
● Осуществляется автоматически как только
счетчик ссылок достигает значения 0,
● Всегда сопряжено с вызовом метода dealloc
(определен в классе NSObject) у того
объекта, который будет удален из памяти.
Высвобождение памяти
Управление памятью
Управление памятью
Высвобождение памяти
Метод dealloc всегда вызывается
автоматически, не пытайтесь вызывать его
самостоятельно.
Управление памятью
Управление памятью
1. Высвобождение занятой объектом памяти,
2. Освобождение занятых ресурсов,
3. Отказ от прав на владение любыми
внутренними объектами.
Роль метода dealloc
Управление памятью
Управление памятью
Пример
@interface Pupil : NSObject
@property (retain) NSString *name;
@end
@implementation Pupil
//...
- (void)dealloc
{
[name release];
name = nil;
[super dealloc];
}
@end
Управление памятью
Управление памятью
1. Вы обязаны вызвать [super dealloc],
2. Ни при каких обстоятельствах не помещайте
код, управляющий системными ресурсами, в
переопределенную реализацию метода.
Переопределение метода dealloc
Управление памятью
Управление памятью
К свойствам объектов применимы следующие
классификаторы:
● retain
● copy,
● readonly,
● readwrite (default for scalars),
● assign (default for objects).
Классификаторы времени жизни
Управление памятью
Управление памятью
● Решает проблему циклических ссылок,
● Не оказывает влияния на счетчик ссылок,
● Классификатор assign.
“Слабое” связывание объектов
Управление памятью
Управление памятью
Пример
@interface UITableView : UIScrollView <NSCoding>
//...
@property (nonatomic, assign)
id<UITableViewDataSource> dataSource;
@property (nonatomic, assign)
id<UITableViewDelegate> delegate;
//...
Управление памятью
Управление памятью
Autorelease Pools
Управление памятью
Управление памятью
Механизм, предоставляющий возможность отказаться
от прав владения объектом, избегая немедленного
высвобождения памяти.
Все объекты, получившие сообщение autorelease,
остаются в памяти до тех пор, пока жив pool, в котором
объект получил это сообщение.
Autorelease pools
Управление памятью
Управление памятью
Обычно вам не нужно создавать подобного
рода объекты, за исключением нескольких
особых случаев.
Autorelease pools
Управление памятью
Управление памятью
Вы работаете над приложением, которое
не базируется на UI framework.
Особые случаи
Управление памятью
Управление памятью
Вы работаете над неким циклом, который
порождает множество временных объектов.
Особые случаи
Управление памятью
Управление памятью
Вы работаете над многопоточным
приложением. Каждый новый поток должен
иметь собственный autorelease pool к моменту
запуска.
Особые случаи
Управление памятью
Управление памятью
При уничтожении autorelease pool рассылает
сообщение release всем связанным с ним
объектам, которые до момента уничтожения
получили сообщение autorelease.
Число рассылаемых сообщений release равно
числу разосланных autorelease.
Принцип действия
Управление памятью
Управление памятью
Пример
{
// ...
NSAutoreleasePool *const pool =
[[NSAutoreleasePool alloc] init];
// Code that creates autoreleased objects.
[pool release];
// ...
}
Управление памятью
Управление памятью
Управления памятью в Core Foundation
Темы для самостоятельного изучения
Управление памятью
Управление памятью
● Memory Management Policy,
● Practical Memory Management,
● Memory Management Programming Guide for Core
Foundation.
Справочная литература
Управление памятью
Управление памятью
Automatic Reference
Counting
Управление памятью
Управление памятью
● Концептуально ARC идентичен MRR,
● В отличии от MRR, подсчет ссылок
осуществляется автоматически,
● Все необходимые для управления памятью
вызовы расставляются за вас на этапе
компиляции.
Переход на ARC
Управление памятью
Управление памятью
● Лишен недостатков, присущих ручным
способам управления памятью,
● Уменьшает объем кода,
● Уменьшает время разработки,
● Нарушение установленных правил
управления памятью приводит к ошибке
компиляции.
Преимущества ARC
Управление памятью
Управление памятью
“You are strongly encouraged to use ARC
for new projects.”
Copyright © 2012 Apple Inc. All Rights Reserved.
Когда использовать ARC?
Управление памятью
Управление памятью
Запрещено вызывать:
● retain,
● release (autorelease),
● [super dealloc].
Ограничения накладываемые ARC
Управление памятью
Управление памятью
Множество классификаторов, применимых к
свойствам объектов, дополнено:
● strong (default for objects),
● weak,
● unsafe_unretained.
Классификаторы времени жизни
Управление памятью
Управление памятью
К переменным применимы следующие
классификаторы:
● __strong (default for objects),
● __weak,
● __unsafe_unretained,
● __autoreleasing.
Классификаторы времени жизни
Управление памятью
Управление памятью
Оформляйте классификаторы правильно!
ClassName *qualifier variable;
Классификаторы времени жизни
Управление памятью
Управление памятью
Пример
// ...
MyClass *__weak weakReference = ...;
MyClass *__unsafe_unretained unsafeReference = ...;
// ...
Управление памятью
Управление памятью
Пример
{
// ...
NSString *__weak string =
[[NSString alloc] initWithFormat:
@"First Name: %@", [self firstName]];
NSLog(@"string: %@", string);
// ...
}
Управление памятью
Управление памятью
Пример
{
// ...
NSError *error;
BOOL OK = [object doSomethingWithError:&error];
if (!OK) {
// ...
}
Управление памятью
Управление памятью
Пример
{
// ...
NSError *__strong error;
NSError *__autoreleasing tmp = error;
BOOL OK = [object doSomethingWithError:&tmp];
error = tmp;
if (!OK) {
// ...
}
Управление памятью
Управление памятью
Пример
{
// ...
NSError *__autoreleasing error;
BOOL OK = [object doSomethingWithError:&error];
if (!OK) {
// ...
}
Управление памятью
Управление памятью
При помощи флагов компилятора:
● -fobjc-arc,
● -fno-objc-arc (для отдельных файлов).
Включение/выключение ARC
Управление памятью
Управление памятью
Autorelease Pool
Blocks
Управление памятью
Управление памятью
● Концептуально блоки ничем не отличаются
от объектов,
● Отличие состоит только в синтаксической
записи.
Autorelease Pool Blocks
Управление памятью
Управление памятью
Пример
{
// ...
@autoreleasepool {
// Code that creates autoreleased objects.
}
// ...
}
Управление памятью
Управление памятью
Особенности управления памятью в Core
Foundation с использованием ARC.
Темы для самостоятельного изучения
Управление памятью
Управление памятью
● Transitioning to ARC Release Notes
● Toll-Free Bridged Types
● Советы по переходу на ARC
Справочная литература
Управление памятью

Mais conteúdo relacionado

Mais procurados

Денис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на PythonДенис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на Pythonit-people
 
03 коллекции
03   коллекции03   коллекции
03 коллекцииNoveo
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...Yandex
 

Mais procurados (7)

Денис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на PythonДенис Колодин: Low-latency и soft-realtime на Python
Денис Колодин: Low-latency и soft-realtime на Python
 
03 коллекции
03   коллекции03   коллекции
03 коллекции
 
ZooKeeper Java Cloud
ZooKeeper Java CloudZooKeeper Java Cloud
ZooKeeper Java Cloud
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Backbone lesson 1
Backbone lesson 1Backbone lesson 1
Backbone lesson 1
 
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
 

Semelhante a iOS-03-Управление памятью

бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014Handy_Backup
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05Computer Science Club
 
Умное кеширование
Умное кешированиеУмное кеширование
Умное кешированиеNicolay Zyk
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019corehard_by
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview ReleaseDenis Shestakov
 
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf Conference
 
КРИ 2008. Проектирование игр: функциональный подход
КРИ 2008. Проектирование игр: функциональный подходКРИ 2008. Проектирование игр: функциональный подход
КРИ 2008. Проектирование игр: функциональный подходKirill Lebedev
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Anastasia Lubennikova
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4HighLoad2009
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
iOS-02-Паттерны ООП
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООПNoveo
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9Technopark
 
Role based access-control
Role based access-controlRole based access-control
Role based access-controlAlex Frolov
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStackIlya Alekseyev
 
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Fedor Malyshkin
 
Повышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайтаПовышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайтаВладимир Колос
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Computer Science Club
 
Резервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условияхРезервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условияхSveta Smirnova
 
Oracle Data Warehouse Cloud
Oracle Data Warehouse CloudOracle Data Warehouse Cloud
Oracle Data Warehouse CloudAndrey Gorbunov
 

Semelhante a iOS-03-Управление памятью (20)

бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014бэкап баз данных Oracle c помощью handy backup, март 2014
бэкап баз данных Oracle c помощью handy backup, март 2014
 
2012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture052012 03 14_parallel_programming_lecture05
2012 03 14_parallel_programming_lecture05
 
Умное кеширование
Умное кешированиеУмное кеширование
Умное кеширование
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
Исключительная модель памяти. Алексей Ткаченко ➠ CoreHard Autumn 2019
 
Ice Php Framework Preview Release
Ice Php Framework Preview ReleaseIce Php Framework Preview Release
Ice Php Framework Preview Release
 
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
 
КРИ 2008. Проектирование игр: функциональный подход
КРИ 2008. Проектирование игр: функциональный подходКРИ 2008. Проектирование игр: функциональный подход
КРИ 2008. Проектирование игр: функциональный подход
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
 
Dz Java Hi Load 0.4
Dz Java Hi Load 0.4Dz Java Hi Load 0.4
Dz Java Hi Load 0.4
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
iOS-02-Паттерны ООП
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООП
 
C++ осень 2012 лекция 9
C++ осень 2012 лекция 9C++ осень 2012 лекция 9
C++ осень 2012 лекция 9
 
Role based access-control
Role based access-controlRole based access-control
Role based access-control
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStack
 
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
Методики «Inversion of Control» и «Dependency Injection». Применение в Spring.
 
Повышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайтаПовышаем производительность Drupal-сайта
Повышаем производительность Drupal-сайта
 
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
Н. Иготти. Виртуализация и виртуальные машины. Лекция 02
 
Резервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условияхРезервное копирование MySQL в экстремальных условиях
Резервное копирование MySQL в экстремальных условиях
 
Oracle Data Warehouse Cloud
Oracle Data Warehouse CloudOracle Data Warehouse Cloud
Oracle Data Warehouse Cloud
 

Mais de Noveo

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииNoveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Noveo
 
Yii2
Yii2Yii2
Yii2Noveo
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизацияNoveo
 
Rest
RestRest
RestNoveo
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP AdvancedNoveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQLNoveo
 
MySQL
MySQLMySQL
MySQLNoveo
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)Noveo
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Noveo
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Noveo
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Noveo
 

Mais de Noveo (20)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 

iOS-03-Управление памятью