[英]@property/@synthesize equivalent in 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編程書:
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
我說: typealias
在斯威夫特更是相當於@synthesize
只需看看這個鏈接: https : //docs.swift.org/swift-book/ReferenceManual/Declarations.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.