Видео курс Swift Starter. Урок 9. Xcode tools.

Автор Ivan Samoilov
Видео курс Swift Starter. Урок 9. Xcode tools.

Всем привет.

Сегодня мы на девятом уроки разработки приложений под iOS 10 на языке — это заключающий урок данного курса для начинающих приложение на Swift наше приложение. Заметки мы написали в предыдущем в седьмом уроке и сегодня хотел бы рассказать про инструменты которыми можно пользоваться в год для для того чтобы облегчить себе работу с приложением тема сегодняшнего урока инструменты поговорим про — это новая функция восемь так же про добавок от предыдущего седьмого года есть и поговорим про такую вещь как xcode Instruments набор разных дополнительных инструментов в xcode опять же для упрощения нахождение ошибок в приложение которое существует уже давно luxcoin он добавляется инструментами так начнём. Давайте запустим наше приложение.

Так мы запустили приложения теперь перейдем в xcode и воздействует видите есть такой значок.

Добавь номер игра ножом его и через xcode покажет нам красивые слепок памяти в данный момент приложение с классами как. Они между собой взаимосвязаны — это удобно. Для того, что смотреть если какие-то утечки памяти в приложении. Вот например мы видим в нашем приложение Get nodes of Creation и. Джейсон они в них есть утечки памяти мы видим так называемые идёт с. Ваня друг на друга сильно ссылок нас снова. Обращаемся к массиву и массив у нас такая же обращается к поршневых и они не могут удалиться корректно из памяти если мы нажмем на гипноз который мы увидим немного другой рисунок также тут увидели такой же. Круг Так и знал и увидим тут опять же ссылку на портного. Давайте перейдем код остановить программу найдём когда-то контроллер и разберем проблемный участок кода какие темы is not compliant. Обращаемся к финишу пришли мы. Обращаемся к массиву столкнулся и мы. Обращаемся внутри блока. Когда в Swift обращение внутри блока он всё равно сохраняет сильно ссылку на наш объект parse not и тут мы. Обращаемся к слову нос таким образом дома. Обращаемся к переменным вне блока из блока и эти переменные имеют сильную ссылку. Затем они ссылаются — это столкнуться целуются на блок и блок ссылаются на неё и даже операция наша завершена и Automatic reference Counting ссылок пытается удалить какой-то объект он не может потому, что он видит, что он имеет сильную ссылку например. Стелс Пилот потому, что мы использовали его внутри нашего финиша Creation, а для этого блока глобальным переменам которые через селф рекомендуют обращаться должен быть слабой ссылкой должна быть копия селфи есть — это исправляется легко есть два главных подхода как — это можно исправить через weak Self или через Skype сейчас я объясню разницу между ними начнем тут у нас есть и Agent not View — это опять же блок и нам нужно начать с него то есть был найти сверху вниз и наши сильные ссылки на вещи разъем после раскопки напишем 2 угловые напишем в них. Вик и добавим сразу назад приедем к штанам говорят, что у нас стало общее нужно поставить? мы можем сделать по-другому через Excel cells то есть произвести распаковку обычно говорим есть мы проверили а. Существует ли вообще у нас в данный момент наш класс если да то ему обратимся заменим везде обращения рюкзак поставили VIP внутримышечно отзывы финиша давайте тоже из правила обращения в пар снау арсенал-цска существует за область она глобальная у нас на всю нашу функцию. Гипноз и мы используем внутри этого блока хотя она создаётся не внутри него соответственно опять же нас будут тоже проблема с удалением желчного комплишн блока напишем тут так же напишем Fashion House финиш операция. У нас также есть. Барс также у нас есть в нос. А не хочу теперь к самому главному. В чём отличается от или. Вик и какой-то объект вот она и какой-то объект там подсказывает, что соревноваться повешенном не нужно потому, что мы её объявляем в принципе внутри. Нам нужно только здесь так. Вик и какой-то объект и он он какой-то объект внутри использовать нам — это нужно. Чтобы избежать reference cycle объект внутри блока на него слабость, а то у нас получается, что блок ссылается на этот объект этот объект ссылаются на блок и происходит циклично ссылка которая не может быть разорвана и получается утечка памяти для того чтобы избежать нужно обращаться копии данного глобального объекта слабая ссылка и сделать — это можно либо либо через когда мы делаем. Вик наш объект может быть обновлён ты, что может либо существовать мил и. Гек заставляет обращаться к объекту как к лапшинова. Поэтому нам нужно производить распаковку — это делается для того чтобы быть уверенным, что данный объект действительно существуют в памяти. Потому, что если он может быть обновлён тазик может ссылаться либо на этот объект либо на нулевой указатель. Поэтому нам нужно производить распаковку рекомендуется использовать, тогда когда мы не знаем может действительно существовать этот объект на данный момент в памяти или он может быть удален когда мы используем. Вик производим распаковку. Одним из методов можно и! после ссылки было поставить и, тогда нам не пришлось выписать garbled. Но, тогда мы можем поставить себя тем, что программа идёт аварийное завершение потому, что осталось на данный момент не будет существовать в памяти. Ну примерно смоделировать такую ситуацию, что у нас если вы помните Data Controller объявление.

0 комментариев
0

Читайте также