swiftビギナーズ倶楽部 vol.2
TRANSCRIPT
![Page 1: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/1.jpg)
はじめてのIOSアプリ開発Swiftビギナーズ倶楽部 第2回
![Page 2: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/2.jpg)
• アプリケーションエンジニア(LAMP / Java / Oracle)• WordPressコミュニティへの参加するのが好き• JavaScriptが好き / Railsも触り始めた^^v
• スマホアプリ開発初心者(Objective-C、Swift全く未経験)
Self-Intoroduction
![Page 3: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/3.jpg)
• 初めてアプリ作ったよ♪
• Interface Builderでオブジェクト作成
• 新規作成時に生成されるイベント
• Optional value(オプショナル値)
Today's Agenda
• override(オーバーライド)
![Page 4: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/4.jpg)
5秒でヒット!初めてのiOSアプリ
Let's Demo!
ドットインストール 「iOSでストップウォッチを作ろう (全9回)」
を参考に機能拡張してみました。
PREMIUM
![Page 5: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/5.jpg)
ビギナーの歩み方
サンプルコードを少しずつ変更して、機能を追加していく。
![Page 6: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/6.jpg)
疑問を解明しよう!
動いたは動いたが・・・不思議がいっぱい!!
![Page 7: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/7.jpg)
オブジェクトの作り方
Interface Builderで作ると
@IBOutlet weak var timerLabel: UILabel!
・「IB」は、Interface Builderのこと。 オブジェクトと、プログラムの変数をつなぎ合わせる。
・「weak」は、弱い参照の意味で、所有権がない??? とりあえず、IBOutlet な項目は、基本weak がよいみたい。
![Page 8: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/8.jpg)
Interface Builderで作ると
@IBAction func startTimer(sender: AnyObject) { }
・ユーザーが行う操作に、メソッドをつなぎ合わせる。
オブジェクトの作り方
// ユーザーの操作による、処理を実装する
・ユーザーの操作によって、実行される。
![Page 9: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/9.jpg)
まだまだ、疑問がいっぱい
@IBOutlet weak var timerLabel: UILabel!
var startTime: NSTimeInterval? = nil
気になってしょうがないの、、、これ!
これも!!
![Page 10: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/10.jpg)
なんてググれば いいんだー???
![Page 11: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/11.jpg)
空文字(ブランク)と、「nil」は違う状態。
Optional value(オプショナル値)
・Swfitでは、通常の変数に「nil」は代入できない。
・Swiftで実行時に「nil」が代入可能なのは、 Optional Value を使っている場合のみ。
・「nil」は、有効なデータが格納されていない、 値が代入されていない状態。
補足
![Page 12: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/12.jpg)
Optional value(オプショナル値)
・「!」を付けた場合:変数の中身が「nil」の場合に、 実行時にエラーになる。
@IBOutlet weak var timerLabel: UILabel!
var startTime: NSTimeInterval? = nil
・「?」を付けた場合:変数の中身が「nil」の場合でも、 エラーにはならない。
![Page 13: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/13.jpg)
なぜ、こんな機能が?
・開発時のバグは、「nil」の扱いを明確せず、適切な 実装をしないことによってバグが発生することがある。
・「optional value」の機能によって、開発者がコードを 実行する前に、「nil」の扱いを意識することによって、 安全性の高いプログラムが実装できる。
Swiftでは
![Page 14: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/14.jpg)
まだ、疑問あるよ!
override func viewDidLoad() { super.viewDidLoad() }
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }
・アプリ起動後に、1度だけ実行される。
・メモリが不足な状態に実行される。
プログラム実行時に、自動的に起こるイベントは、 この他にも、たくさんあります。
補足
![Page 15: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/15.jpg)
もう、一個疑問!!
override func viewDidLoad() { super.viewDidLoad() }
・親クラスのメソッドの替わり(上書きして)に、自分のメソッドを実行できる。
override(オーバーライド)って何?
![Page 16: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/16.jpg)
親クラスって何???
class ViewController: UIViewController { @IBOutlet weak var timerLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() } }
このクラスのこと
「super」は、親メソッドを指す。 親のviewDidLoadメソッドを実行。
・「viewDidLoad」メソッドは、新規作成後に最初から書かれている。 ・この処理がないと、初期設定が行えなくなってしまうので特別。
![Page 17: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/17.jpg)
わからないー! だれか教えてー♪
Swiftビギナーズ倶楽部は
わからないことは周りの人に聞いて、気軽に教え合って、 皆の疑問を1つでも解決して、楽しんで開発していきましょう。
![Page 18: Swiftビギナーズ倶楽部 vol.2](https://reader033.vdocuments.mx/reader033/viewer/2022052508/559f68a01a28ab2f118b4602/html5/thumbnails/18.jpg)
Let's study together!
Thank you :)