Swift表記 クラスの初期化

今までObejctive-Cでアプリを作っていただいだいにとって、Swiftは全くの未知の領域です。。。

 

なんでクラスの初期化ができないの?

1つ1つ順調に壁にぶつかっております。岩がごつごつした荒野を生身で歩いています。

まあまあ落ちついてクラスの初期化からやってみよかということで、以下のコードを書いて初期化をしようとしたらすぐエラー出ました。

 

import SpriteKit

import Foundation

import UIKit

 

class ButtonNode{

    

    var _NormalTexture:SKTexture //通常時のボタン

    var _PushedTexture:SKTexture //押下時のボタン

    var _IsContinuePush:Bool     //押し込み式ボタンフラグ(一度押下すると次に押下されるまで押下時画像が表示される)

    var _IsPushed:Bool           //押し込み式の場合のみ使用 現在押されているかどうかのフラグ

 

//----------------------------------------------

//

// 初期化

//

//----------------------------------------------

    init(){

    }

 

}

 

Swiftだと、メンバ変数はコンストラクタ内で初期化しないとエラーになるんですね。

なので、Bool型の2つをfalseで初期化して、SKTextureを空で初期化するにはどうするの??

ここでもう1つ、Swiftではnilで許容する変数宣言として型の最後に?をつける表記があった。そうなのか。

ということで、SKTexture?としてnilを許容しつつnilで初期化するようにして、下記にすることでエラー解消しました。

 

import SpriteKit

import Foundation

import UIKit

 

class ButtonNode{

    

    var _NormalTexture:SKTexture? //通常時のボタン

    var _PushedTexture:SKTexture? //押下時のボタン

    var _IsContinuePush:Bool      //押し込み式ボタンフラグ(一度押下すると次に押下されるまで押下時画像が表示される)

    var _IsPushed:Bool            //押し込み式の場合のみ使用 現在押されているかどうかのフラグ

 

//----------------------------------------------

//

// 初期化

//

//----------------------------------------------

    init(){

        _IsContinuePush = false

        _IsPushed = false

    }

 

}

 

結論、手探り感半端ないけど1こ1こ調べる。