Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Adding initializers to a class Добавление инициализаторами к классу

Understanding tuples | Understanding tuples Понимание кортежи | Creating optional variables | Creating optional variables Создание дополнительных переменных | Defining and using enumerations | Defining and using enumerations | Writing closures | Writing closures Написание закрытия | Defining and instantiating classes | Defining and instantiating classes Определение и создание экземпляра классы |


Читайте также:
  1. Adding a New Controller
  2. Adding a Pump to the Diagram
  3. Adding initializers to a class
  4. Adding property observers
  5. Adding property observers Добавление наблюдателей собственности
  6. Classical Champion of Free Trade

 

- Пока мы можем предоставить начальные значения для каждого из наших свойств, альтернатива, чтобы добавить инициализатор для вашего класса.Способ обеспечения функциональности, которая будет автоматически вызываться при создается новый экземпляр. Так, я начинаю здесь с основного определения класса. Я собираюсь удалены начальные значения для обоих этих свойств этой строки и целое число. Как только я это сделаю, я буду видеть стрелку всплывающее окно. Я не могу сейчас создавать объекты этого класса, потому что они могут существовать в недопустимом состоянии.

Это нормально, я собираюсь добавить инициализатор сейчас. Таким образом, это просто инициализации и блок кода и пустой скобки. Это инициализации по умолчанию. Эта команда не имеет периметр, и Свифт инициализирует ничего не вернуть, поэтому мы не видим возвращение стрелка здесь. Это как метод просто вызывает инициализации, но мы также не должны ключевое слово фанк перед ним. Это зарезервированное слово. Это понимают Свифт. Итак, я собираюсь использовать это, чтобы установить пару долинах умолчанию для моих двух свойств. Таким образом, название равна John Doe, и оценка равна нулю.

Теперь стрелка уходит. Понятно, что этот класс является действительным. Я могу создать экземпляр этого. Когда мы делаем это, метод инициализации будет вызван автоматически. Так что, если я показать содержимое этого мы видим, что в описании. Он получил, что внутреннее состояние. Игрок John Doe имеет нулевую оценку. Итак, двигаемся дальше. Если бы я хотел разные значения, если я не хочу, чтобы просто принять эти значения по умолчанию, ну, я мог бы создать объект, как это, и затем изменить его свойства. Если я хочу опцию, чтобы создать и инициализировать новый объект плеер с разным данным от этого умолчанию, хорошо, я мог бы сделать собственную инициализатор.

Инициализатор, который принимает периметров. Таким образом, я буду идти вперед и делать то, инициализатором с периметров. Мы по-прежнему с помощью Init, но на этот раз вместо пустого скобках, что я собираюсь сказать, имя толстой кишки строку. Теперь мы столкнулись с проблемой, и это имя также свойство этого класса. Так что, если я хотел принять этот периметр и использовать его для установки свойства, ну, я не могу просто написать имя равна имя. У нас есть своего рода вопрос там. Я должен быть четко об этом. Поэтому, чтобы избежать столкновения, я мог бы либо изменить имя по периметру, но лучший способ это просто, что я сделаю это. Self.name.

Используйте (вперед) себя есть текущий экземпляр этого класса. Чтобы сделать это очень ясно, когда я имею в виду свойство этого класса self.name, а не просто дойдя в периметр. Другие языки используют ту или сослаться на той же идее текущий экземпляр этого класса. Swift использует себя. Это правда, что мы не всегда нужно использовать себя. Я не должен был использовать его здесь оценка имущества, но это хорошая практика для ясности, если есть какая-то возможность непонимания того, что Вы имеете в виду.

Ладно, теперь у нас есть два инициализаторами. Если я оставлю оригинальный метод инициализации в этом классе, у меня теперь есть выбор: либо экземпляра объекта с помощью пустой скобки, как это, или экземпляра, передавая значение с этой новой инициализаторе. Так, только создав несколько новых строк кода, используя пользовательский инициализатор создаст второй игрок, равный Имя игрока: Алиса. Тогда я буду распечатать описание Алисы. Таким образом, мы можем использовать версию с пустой скобках, в котором будут определены его Джон Доу, или мы можем использовать версию, проходящий в каком-то информации.

Теперь обратите внимание, что мне нужно, чтобы обеспечить по имени периметр здесь. Если бы я попытался оставить это, и просто передать в буквальном значении строки, я иду, чтобы увидеть маленькую стрелку всплывающее здесь. Хотя это довольно очевидно, что это такое, поэтому он должен предложить исправить ее. Да, отсутствует имя аргумент метка, так это исправить просто вставить имя, и оно будет исправить это для нас. Таким образом, два отдельных объекта каждый со своим собственным набором данных, но созданные с использованием разных инициализаторов. Теперь же, как инициализация автоматически вызывается, когда экземпляр объекта, мы также имеем возможность создать де инициализатор, который автоматически вызывается, когда объект достигает конца своей жизни.

Это просто слово-де-инициализации с блоком кода. Теперь вы можете иметь только один де инициализатор, и это не настраивается. Это занимает не периметров. Это не имеет никакого скобки. Это не возвращает значения, но это, где бы вы поставить любую необходимую код очистки объект должен делать. В настоящее время в целом, в то время как инициализирует очень распространены, вам не нужно-де-инициализаторами для большинства ваших классов. Это необходимо только в ситуациях, подобных иметь класс, который открывает подключение к базе данных или в файле, когда он первый экземпляр.

Он держит его открытым в течение жизни объекта, и вы должны убедиться, что объект закрыл соединение к ресурсу, прежде чем он де-выделены. Большую часть времени, вам не нужно де инициализации. Теперь, позвонив де Init не находится под вашим непосредственным контролем. Вы на самом деле не сделать это самостоятельно. В Свифт, мы не будем делать ручное управление памятью. Swift использует то, что называется автоматическая подсчет ссылок или дуги. В то время как мы вручную создаем наши объекты, когда мы решаем их экземпляры здесь, будь то с помощью обычной инициализации метод или перегруженный один, мы решаем чтобы создать этот объект.

Мы говорим ли экземпляр, но Свифт отслеживает, когда эти объекты не больше не нужны. Он будет решать, когда де выделить их, и в этот момент, когда де инициализации будет называться. Теперь, имейте в виду, что если у вас есть класс, который проведут открытую ресурс, нет ничего, чтобы остановить вас писать свой собственный метод, который преформ любую необходимую очистку. Просто назвав его себе в нормальной логики вашего программирования, то есть то, что вы обычно должны делать. Вам не нужно оставить его де Init, но вы можете использовать де инициализации, чтобы гарантировать, что очистка произошло.

 

 


Дата добавления: 2015-08-20; просмотров: 98 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Adding initializers to a class| Using inheritance

mybiblioteka.su - 2015-2024 год. (0.008 сек.)