我们曾经声明property
在类之间传递数据如下:
.h file (interface file)
@property (nonatomic) double topSpeed;
.m file (implementation file)
@synthesize topSpeed;
现在没有interface
类,如何在.swift
类之间传递数据?
我们曾经声明property
在类之间传递数据如下:
.h file (interface file)
@property (nonatomic) double topSpeed;
.m file (implementation file)
@synthesize topSpeed;
现在没有interface
类,如何在.swift
类之间传递数据?
Swift 没有区分属性和实例变量(即属性的底层存储)。要定义一个属性,您只需在类的上下文中声明一个变量。
一个 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
. 请参阅此处了解更多信息。
有关更多信息,请参阅Swift 编程指南:
存储的属性和实例变量
如果您有使用 Objective-C 的经验,您可能知道它提供了两种方法来将值和引用存储为类实例的一部分。除了属性之外,您还可以使用实例变量作为存储在属性中的值的后备存储。
Swift 将这些概念统一到一个属性声明中。Swift 属性没有对应的实例变量,并且不会直接访问属性的后备存储。这种方法避免了在不同上下文中如何访问值的混淆,并将属性的声明简化为一个单一的、明确的声明。有关属性的所有信息(包括其名称、类型和内存管理特性)都在单个位置中定义,作为类型定义的一部分。
使用属性。
来自Swift 编程指南:
存储的属性和实例变量
如果您有使用 Objective-C 的经验,您可能知道它提供了两种方法来将值和引用存储为类实例的一部分。除了属性之外,您还可以使用实例变量作为存储在属性中的值的后备存储。
Swift 将这些概念统一到一个属性声明中。Swift 属性没有对应的实例变量,并且不会直接访问属性的后备存储。这种方法避免了在不同上下文中如何访问值的混淆,并将属性的声明简化为一个单一的、明确的声明。有关属性的所有信息(包括其名称、类型和内存管理特性)都在单个位置中定义,作为类型定义的一部分。
Objective-C 中的属性对应于 Swift 中的属性。在 Objective-C 和 Swift 中有两种实现属性的方法:
var topSpeed : Double
或let topSpeed : Double = 4.2
在类声明中声明它,就像在函数体中声明局部变量一样。您不必指定支持实例变量的名称,因为目前 Swift 中没有实例变量。您必须始终使用该属性而不是其支持实例变量。var topSpeed : Double { get { getter code here } set { setter code here } }
(对于readwrite
属性)或var topSpeed : Double { getter code here }
(对于readonly
属性)。听起来您的问题至少有一部分与将给定类的接口与其他类通信有关。与 Java 一样(与 C、C++ 和 Objective-C 不同),Swift 不会将接口与实现分开。import
如果要使用在其他地方定义的符号,则不需要头文件。相反,您import
是一个模块,例如:
import Foundation
import MyClass
要访问另一个类中的属性,请导入该类。
存储的属性和实例变量
如果您有使用 Objective-C 的经验,您可能知道它提供了两种方法来将值和引用存储为类实例的一部分。除了属性之外,您还可以使用实例变量作为存储在属性中的值的后备存储。
Swift 将这些概念统一到一个属性声明中。Swift 属性没有对应的实例变量,并且不会直接访问属性的后备存储。这种方法避免了在不同上下文中如何访问值的混淆,并将属性的声明简化为一个单一的、明确的声明。有关属性的所有信息(包括其名称、类型和内存管理特性)都在单个位置中定义,作为类型定义的一部分。
来自 Swift Programming Book:
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
我说 : typealias
在 swift for@synthesize
看看这个链接:https ://docs.swift.org/swift-book/ReferenceManual/Declarations.html