Подтвердить что ты не робот

@property/@synthesize эквивалент в быстрых

Мы использовали объявление property для передачи данных между классами следующим образом:

.h file (interface file)
@property (nonatomic) double topSpeed;

.m file (implementation file)
@synthesize topSpeed;

Теперь нет класса interface, как передавать данные между .swift классами?

4b9b3361

Ответ 1

Swift не обеспечивает дифференциации свойств и переменных экземпляра (т.е. основного хранилища для свойства). Чтобы определить свойство, вы просто объявляете переменную в контексте класса.

Быстрый класс - это просто файл ClassName.swift.

Вы объявляете класс и свойства как

class SomeClass {

  var topSpeed: Double
  var aStrProperty: String
  var anIntProperty: Int

  //Initializers and other functions

}

Вы получаете доступ к значениям свойств через точечную нотацию. Начиная с Xcode6 beta 4, в Swift также есть модификаторы доступа (public, internal и private). По умолчанию каждое свойство internal. Подробнее см. здесь.

Для получения дополнительной информации см. Руководство по быстрому программированию:

Сохраненные свойства и переменные экземпляра

Если у вас есть опыт работы с Objective-C, вы можете знать, что он предоставляет два способа хранения значений и ссылок как часть экземпляра класса. В дополнение к свойствам вы можете использовать переменные экземпляра в качестве поддержки хранить значения, хранящиеся в свойстве.

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

Ответ 2

Использование свойств.

В Руководство по быстрому программированию:

Сохраненные свойства и переменные экземпляра

Если у вас есть опыт работы с Objective-C, вы можете знать, что он предоставляет два способа хранения значений и ссылок как часть экземпляра класса. В дополнение к свойствам вы можете использовать переменные экземпляра в качестве поддержки хранить значения, хранящиеся в свойстве.

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

Ответ 3

Свойства в Objective-C соответствуют свойствам в Swift. Существует два способа реализации свойств в Objective-C и Swift:

  • Синтезированные/автосинтезированные свойства в Objective C - они называются "хранимыми свойствами" в Swift. Вы просто объявляете его с помощью var topSpeed : Double или let topSpeed : Double = 4.2 в объявлении класса, точно так же, как вы объявляете локальную переменную в теле функции. Вы не можете указать имя переменной экземпляра резервной копии, потому что, в настоящее время нет переменных экземпляра в Swift. Вы всегда должны использовать свойство вместо переменной экземпляра backing.
  • Введенные вручную свойства в Objective-C - они называются "вычисленными свойствами" в Swift. Вы объявляете их в объявлении класса, например var topSpeed : Double { get { getter code here } set { setter code here } } (для свойств readwrite), или var topSpeed : Double { getter code here } (для свойств readonly).

Ответ 4

Похоже, что хотя бы часть вашего вопроса связана с передачей данного интерфейса класса другим классам. Подобно Java (и в отличие от C, С++ и Objective-C), Swift не отделяет интерфейс от реализации. Вы не import заголовочный файл, если хотите использовать символы, определенные где-то в другом месте. Вместо этого вы import модуль, например:

import Foundation
import MyClass

Чтобы получить доступ к свойствам в другом классе, импортируйте этот класс.

Ответ 5

Сохраненные свойства и переменные экземпляра

Если у вас есть опыт работы с Objective-C, вы можете знать, что он предоставляет два способа хранения значений и ссылок как часть экземпляра класса. В дополнение к свойствам вы можете использовать переменные экземпляра в качестве хранилища резервных копий для значений, хранящихся в свойстве.

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

Из книги быстрого программирования:

    struct FixedLengthRange {
    var firstValue: Int
    let length: Int
    }

    var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)