我们曾经声明property
在类之间传递数据,如下所示:
.h file (interface file)
@property (nonatomic) double topSpeed;
.m file (implementation file)
@synthesize topSpeed;
现在没有interface
类,如何在.swift
类之间传递数据?
答案 0 :(得分:53)
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
。 See here了解更多信息。
有关详细信息,请参阅Swift Programming Guide:
存储的属性和实例变量
如果您有使用Objective-C的经验,您可能知道它提供了 将值和引用存储为类实例的一部分的两种方法。 除了属性,您还可以使用实例变量作为支持 存储存储在属性中的值。
Swift将这些概念统一到一个属性声明中。一个 Swift属性没有相应的实例变量,并且 不直接访问属性的后备存储。这个 方法避免了对如何在不同方面访问值的混淆 上下文并将财产的声明简化为单一, 明确的声明。有关该物业的所有信息 - 包括其 名称,类型和内存管理特性 - 在a中定义 单个位置作为类型定义的一部分。
答案 1 :(得分:13)
使用属性。
存储的属性和实例变量
如果您有使用Objective-C的经验,您可能知道它提供了 将值和引用存储为类实例的一部分的两种方法。 除了属性,您还可以使用实例变量作为支持 存储存储在属性中的值。
Swift将这些概念统一到一个属性声明中。一个 Swift属性没有相应的实例变量,并且 不直接访问属性的后备存储。这个 方法避免了对如何在不同方面访问值的混淆 上下文并将财产的声明简化为单一, 明确的声明。有关该物业的所有信息 - 包括其 名称,类型和内存管理特性 - 在a中定义 单个位置作为类型定义的一部分。
答案 2 :(得分:3)
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
属性)。答案 3 :(得分:1)
听起来至少部分问题涉及将给定类的接口传递给其他类。与Java一样(与C,C ++和Objective-C不同),Swift不会将接口与实现分开。如果要使用在其他位置定义的符号,则不要import
头文件。相反,您import
模块,例如:
import Foundation
import MyClass
要访问其他类中的属性,请导入该类。
答案 4 :(得分:0)
存储属性和实例变量
如果您有使用Objective-C的经验,您可能知道它提供了两种方法来存储值和引用作为类实例的一部分。除了属性之外,您还可以使用实例变量作为存储在属性中的值的后备存储。
Swift将这些概念统一到一个属性声明中。 Swift属性没有相应的实例变量,并且不直接访问属性的后备存储。这种方法避免了在不同的上下文中如何访问值的混淆,并将属性的声明简化为单个明确的语句。有关该属性的所有信息(包括其名称,类型和内存管理特征)都在一个位置定义为类型定义的一部分。
来自Swift编程手册:
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
答案 5 :(得分:0)
我说:typealias
相当于@synthesize
只需查看以下链接:https://docs.swift.org/swift-book/ReferenceManual/Declarations.html