WatoBlo

新卒エンジニア

Swiftの備忘録(最終更新 2018-02-11)

・Optional型について

SwiftではJavaやCのように、宣言だけして代入はしないということをするとコンパイラがエラーを吐く。よって、optional型にすることで変数の中身がnull(Swiftではnilと呼んでいる)であることを許容することができる。←めんどうではあるがわりと大事

・参照について

`weak` を書かないと、循環参照が発生し、メモリが解放されるべきタイミングで解放されないまま残ってしまう(メモリリークが起きてしまう)(メモリリークが多く発生すると、メモリが不足しアプリが落ちてしまう)古い機種だと少し影響があるかもしれない

`@IBOutlet` の場合も、Xcodeが自動的に `weak` を付けてくれるので特に意識する必要はない(現時点では)

取り扱うオブジェクトの数が増えて、(あまり設計として好ましくは無いですが)オブジェクトが相互に参照し合っているような状況が出てきて、循環参照によるメモリリークが疑わしいとなったときに、やっと思い出して使うことを考えてみる。

 

・UI部品について

 IBOutletはUIのパーツをプロパティとして参照するための仕組みで、IBActionはUIパーツのアクションをメソッドとしてコードに追加する仕組みである。

なので、IBOutletは名詞の名前(startButtonなど)を、IBActionは動詞の名前(buttonTapped)をつけるとより分かりやすくなる。

 

・イマイチピンとこないsenderについて

*具体例

func slidshowImage(_ sender: any) {

}

*IBActionで設定したもの

この関数の引数である sender はボタン等のUI部品を表している?

メソッドが呼ばれた時に渡される `sender` は、スライドショーを開始・停止するボタンなので、そこから戻る・進むボタンにはアクセスできない

呼ばれた時点ですでに他のボタンにアクセスできないので

 

・現時点で理解が曖昧な箇所を列挙(2012-02-07)

 ・制約

 ・プロパティ(保持型と計算型という2種類があるらしい)

 ・デリゲート