次のように、クラス間でデータを渡すために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ベータ4以降、Swiftにはアクセス修飾子(public
、internal
およびprivate
)もあります。デフォルトでは、すべてのプロパティはinternal
です。 詳細はこちら .
詳細については、 Swift Programming Guide を参照してください。
格納されたプロパティとインスタンス変数
Objective-Cの経験がある場合、クラスインスタンスの一部として値と参照を保存する2つの方法を提供していることがわかります。プロパティに加えて、プロパティに格納されている値のバッキングストアとしてインスタンス変数を使用できます。
Swiftはこれらの概念を単一のプロパティ宣言に統合します。 Swiftプロパティは対応するインスタンス変数を持たず、プロパティのバッキングストアは直接アクセスされません。このアプローチは、異なるコンテキストで値にアクセスする方法に関する混乱を回避し、プロパティの宣言を簡素化しますプロパティに関するすべての情報(名前、タイプ、メモリ管理特性など)は、タイプの定義の一部として単一の場所で定義されます。
プロパティの使用。
保存されたプロパティとインスタンス変数
Objective-Cの経験がある場合、値と参照をクラスインスタンスの一部として保存する2つの方法を提供していることをご存知かもしれません。プロパティに加えて、プロパティに格納されている値のバッキングストアとしてインスタンス変数を使用できます。
Swiftはこれらの概念を単一のプロパティ宣言に統合します。 Swiftプロパティは対応するインスタンス変数を持たず、プロパティのバッキングストアは直接アクセスされません。このアプローチは、異なるコンテキストで値にアクセスする方法に関する混乱を回避し、プロパティの宣言を簡素化しますプロパティに関するすべての情報(名前、タイプ、メモリ管理特性など)は、タイプの定義の一部として単一の場所で定義されます。
Objective-Cのプロパティは、Swiftのプロパティに対応しています。 Objective-CおよびSwiftにプロパティを実装するには、2つの方法があります。
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
プロパティの場合)などのクラス宣言で宣言します。質問の少なくとも一部は、特定のクラスのインターフェイスを他のクラスに伝えることに関するもののようです。 Like Java(およびC、C++、Objective-Cとは異なります)、Swiftはインターフェイスを実装から分離しません。import
どこか別の場所で定義されたシンボルを使用する場合のヘッダーファイル代わりに、次のようにimport
amodule
import Foundation
import MyClass
別のクラスのプロパティにアクセスするには、そのクラスをインポートします。
格納されたプロパティとインスタンス変数
Objective-Cの経験がある場合、値と参照をクラスインスタンスの一部として保存する2つの方法を提供していることをご存知かもしれません。プロパティに加えて、プロパティに格納されている値のバッキングストアとしてインスタンス変数を使用できます。
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