it-swarm.com.ru

@ property/@ синтезировать эквивалент в swift

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

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

.m file (implementation file)
@synthesize topSpeed;

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

37
Mutawe

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

Класс Swift - это просто файл ClassName.Swift.

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

class SomeClass {

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

  //Initializers and other functions

}

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

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

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

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

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

53
Cezar

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

Из Swift Руководство по программированию :

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

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

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

13
trojanfoe

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

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

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

import Foundation
import MyClass

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

1
Caleb

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

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

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

Из книги программирования Swift:

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

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

Я говорю: typealias эквивалентен даже больше в Swift для @synthesize 

просто посмотрите на эту ссылку: https://docs.Swift.org/Swift-book/ReferenceManual/Declarations.html

 enter image description here

0
AMH