2017-08-16 10 views
1

これを検索しましたが、答えが見つかりませんでした。プリミティブ型のメモリ割り当て

var x : Int

か、我々はまた、この変数にメモリを割り当てるために、それを初期化する必要があります:

は、私たちがこのような変数を宣言する際にメモリの割り当てが行われますか?

+0

メモリは、 'init'関数を呼び出すとき、またはリテラルをインスタンス化するときに割り当てられます。 –

答えて

1

すべては、プロパティの宣言方法によって異なります。インプリメンテーション依存でも、他の動作に最適化されている場合もあります。一般に

The Swift Programming Language (Swift 4) Properties

、格納された特性が早期に割り当てられます。それらが使用される直前またはいつか。レイジープロパティは、アクセス時に割り当てられます。計算されたプロパティは決して割り当てられず、アクセスされたときに計算されます。

この例では、変数は宣言されていますが、初期化も割り当てもされていません。あなたが値に設定することなく、それを使用しようとすると、コンパイラからこの文を取得する:あなたは、それはそれに値を割り当てると

を初期化される前に使用の「x」

変数割り当てられます。

var x: Int // declared but not allocated or initialized 
x = 10  // allocated and initialized 

それは、その後、全体構造体を一度に割り当てられますstructの一部であった場合。 initメソッドは、メモリの初期化を行います。