@财产/ @综合等价于swift

我们曾经声明property在类之间传递数据如下:

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

现在没有interface类,如何在.swift类之间传递数据?

Swift不提供属性和实例variables(即属性的底层存储)之间的区别。 要定义一个属性,只需在类的上下文中声明一个variables即可。

一个Swift类只是一个ClassName.swift文件。

你声明一个类和属性为

 class SomeClass { var topSpeed: Double var aStrProperty: String var anIntProperty: Int //Initializers and other functions } 

您可以通过点符号访问属性值。 从Xcode6 beta 4开始,在Swift中也有访问修饰符( publicinternalprivate )。 默认情况下每个属性是internal 。 在这里看到更多的信息。

有关更多信息,请参阅Swift编程指南 :

存储的属性和实例variables

如果您有使用Objective-C的经验,您可能知道它提供了两种方法将值和引用存储为类实例的一部分。 除了属性之外,还可以使用实例variables作为存储在属性中的值的后备存储。

Swift将这些概念统一成一个属性声明。 一个Swift属性没有相应的实例variables,并且不直接访问属性的后备存储。 这种方法避免了在不同情况下如何访问价值的混淆,并简化了财产的声明成为一个单一的,明确的声明。 所有有关该属性的信息(包括其名称,types和内存pipe理特性)都在单个位置中定义为该types定义的一部分。

使用属性。

从Swift编程指南 :

存储的属性和实例variables

如果您有使用Objective-C的经验,您可能会知道它提供了两种方法将值和引用存储为类实例的一部分。 除了属性之外,还可以使用实例variables作为存储在属性中的值的后备存储。

Swift将这些概念统一成一个属性声明。 一个Swift属性没有相应的实例variables,并且不直接访问属性的后备存储。 这种方法避免了在不同情况下如何访问价值的混淆,并简化了财产的声明成为一个单一的,明确的声明。 所有有关该属性的信息(包括其名称,types和内存pipe理特性)都在单个位置中定义为该types定义的一部分。

Objective-C中的属性对应于Swift中的属性。 在Objective-C和Swift中有两种实现属性的方法:

  1. 目标C中的合成/自动合成属性 – 在Swift中被称为“存储属性”。 你只需用var topSpeed : Double来声明它,或者在类声明中使用let topSpeed : Double = 4.2 ,就像在函数体中声明局部variables一样。 您不必指定支持实例variables的名称,因为在Swift中当前没有实例variables。 您必须始终使用该属性而不是其支持的实例variables。
  2. 在Objective-C中手动实现的属性 – 在Swift中被称为“计算属性”。 你可以在类声明中声明var topSpeed : Double { get { getter code here } set { setter code here } } (用于readwrite属性)或者var topSpeed : Double { getter code here } (用于readonly属性)。

这听起来像你的问题的至less一部分涉及到给其他类传递一个给定类的接口。 像Java(而不像C,C ++和Objective-C),Swift不会将接口从实现中分离出来。 如果您想使用在其他位置定义的符号,则不要import头文件。 相反,您需要import一个模块 ,如:

 import Foundation import MyClass 

要访问另一个类中的属性,请导入该类。

存储的属性和实例variables

如果您有使用Objective-C的经验,您可能会知道它提供了两种方法将值和引用存储为类实例的一部分。 除了属性之外,还可以使用实例variables作为存储在属性中的值的后备存储。

Swift将这些概念统一成一个属性声明。 一个Swift属性没有相应的实例variables,并且不直接访问属性的后备存储。 这种方法避免了在不同情况下如何访问价值的混淆,并简化了财产的声明成为一个单一的,明确的声明。 所有有关该属性的信息(包括其名称,types和内存pipe理特性)都在单个位置中定义为该types定义的一部分。

从Swift编程书:

  struct FixedLengthRange { var firstValue: Int let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)