「?」や「!」マークについて
プロジェクトのコードをみていて度々この謎のマークが出てくることに疑問を抱いていました。
まずSwiftには「オプショナル型「と「非オプショナル型」というものがあるらしく、違いは下記の通りです。
・オプショナル型はnilの代入を許容することができる
・非オプショナル型はnilの代入を許容することができない
オプショナル型の変数には最後に「?」か「!」をつけます。
// 例えばStringにnilを代入しようとするとエラーが出ます
$ var a: String = nil
# => error: nil cannot initialize specified type 'String'
// 「?」をつければエラーは出ません
$ var a: String? = nil
// Optionalとついています
$ var a: String? = "hoge"
$ print(a)
# => Optional("hoge")
// 宣言時はnilの状態
$ var a: String?
$ print(a)
# => nil
classについて
こちらはxcodeで新規アプリを作成した際のViewControllerの中身です。
// UIViewController」を継承している
class ViewController: UIViewController {
// viewDidLoadの上書き
override func viewDidLoad() {
// スーパクラスのviewDidLoadを呼び出す
super.viewDidLoad()
}
}
ここではまず「ViewController」というclassを作成しており、「UIViewController」を継承しています。
そして「viewDidLoad」という関数をoverride(上書き)している。
super.viewDidLoad()
はスーパークラスのviewDidLoadを呼び出している。
この辺りは他の言語と似たようなものですね。
AppDelegateってなんだ?
Xcoodeプロジェクトを開いて目にするのがAppDelegate.swiftというファイル。
アプリ全体のライフタイムイベントを管理する。
中には6つの関数があり、それぞれ呼び出されるタイミングが異なります。
application
// アプリを起動してストーリーボードが読み込まれた際に動く。
applicationWillResignActive
//アプリがアクティブ状態から非アクティブ状態に移行しようとしているときに動く
applicationDidEnterBackground
//アプリの終了時に動く
applicationWillEnterForeground
//アプリの起動時に動く
applicationDidBecomeActive
applicationWillTerminate
//フリックでのアプリ終了時に動く```