swiftビギナーズ倶楽部 vol.2

18
はじめてのIOSアプリ開発 Swiftビギナーズ倶楽部 第2回

Upload: kanako-kobayashi

Post on 10-Jul-2015

274 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Swiftビギナーズ倶楽部 vol.2

はじめてのIOSアプリ開発Swiftビギナーズ倶楽部 第2回

Page 2: Swiftビギナーズ倶楽部 vol.2

• アプリケーションエンジニア(LAMP / Java / Oracle)• WordPressコミュニティへの参加するのが好き• JavaScriptが好き / Railsも触り始めた^^v

• スマホアプリ開発初心者(Objective-C、Swift全く未経験)

Self-Intoroduction

Page 3: Swiftビギナーズ倶楽部 vol.2

• 初めてアプリ作ったよ♪

• Interface Builderでオブジェクト作成

• 新規作成時に生成されるイベント

• Optional value(オプショナル値)

Today's Agenda

• override(オーバーライド)

Page 4: Swiftビギナーズ倶楽部 vol.2

5秒でヒット!初めてのiOSアプリ

Let's Demo!

ドットインストール 「iOSでストップウォッチを作ろう (全9回)」

を参考に機能拡張してみました。

PREMIUM

Page 5: Swiftビギナーズ倶楽部 vol.2

ビギナーの歩み方

サンプルコードを少しずつ変更して、機能を追加していく。

Page 6: Swiftビギナーズ倶楽部 vol.2

疑問を解明しよう!

動いたは動いたが・・・不思議がいっぱい!!

Page 7: Swiftビギナーズ倶楽部 vol.2

オブジェクトの作り方

Interface Builderで作ると

@IBOutlet weak var timerLabel: UILabel!

・「IB」は、Interface Builderのこと。  オブジェクトと、プログラムの変数をつなぎ合わせる。

・「weak」は、弱い参照の意味で、所有権がない???  とりあえず、IBOutlet な項目は、基本weak がよいみたい。

Page 8: Swiftビギナーズ倶楽部 vol.2

Interface Builderで作ると

@IBAction func startTimer(sender: AnyObject) { }

・ユーザーが行う操作に、メソッドをつなぎ合わせる。

オブジェクトの作り方

// ユーザーの操作による、処理を実装する

・ユーザーの操作によって、実行される。

Page 9: Swiftビギナーズ倶楽部 vol.2

まだまだ、疑問がいっぱい

@IBOutlet weak var timerLabel: UILabel!

var startTime: NSTimeInterval? = nil

気になってしょうがないの、、、これ!

これも!!

Page 10: Swiftビギナーズ倶楽部 vol.2

なんてググれば いいんだー???

Page 11: Swiftビギナーズ倶楽部 vol.2

空文字(ブランク)と、「nil」は違う状態。

Optional value(オプショナル値)

・Swfitでは、通常の変数に「nil」は代入できない。

・Swiftで実行時に「nil」が代入可能なのは、   Optional Value を使っている場合のみ。

・「nil」は、有効なデータが格納されていない、  値が代入されていない状態。

補足

Page 12: Swiftビギナーズ倶楽部 vol.2

Optional value(オプショナル値)

・「!」を付けた場合:変数の中身が「nil」の場合に、            実行時にエラーになる。

@IBOutlet weak var timerLabel: UILabel!

var startTime: NSTimeInterval? = nil

・「?」を付けた場合:変数の中身が「nil」の場合でも、 エラーにはならない。

Page 13: Swiftビギナーズ倶楽部 vol.2

なぜ、こんな機能が?

・開発時のバグは、「nil」の扱いを明確せず、適切な  実装をしないことによってバグが発生することがある。

・「optional value」の機能によって、開発者がコードを 実行する前に、「nil」の扱いを意識することによって、  安全性の高いプログラムが実装できる。

Swiftでは

Page 14: Swiftビギナーズ倶楽部 vol.2

まだ、疑問あるよ!

override func viewDidLoad() { super.viewDidLoad() }

override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }

・アプリ起動後に、1度だけ実行される。

・メモリが不足な状態に実行される。

プログラム実行時に、自動的に起こるイベントは、 この他にも、たくさんあります。

補足

Page 15: Swiftビギナーズ倶楽部 vol.2

もう、一個疑問!!

override func viewDidLoad() { super.viewDidLoad() }

・親クラスのメソッドの替わり(上書きして)に、自分のメソッドを実行できる。

override(オーバーライド)って何?

Page 16: Swiftビギナーズ倶楽部 vol.2

親クラスって何???

class ViewController: UIViewController { @IBOutlet weak var timerLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() } }

このクラスのこと

「super」は、親メソッドを指す。 親のviewDidLoadメソッドを実行。

・「viewDidLoad」メソッドは、新規作成後に最初から書かれている。 ・この処理がないと、初期設定が行えなくなってしまうので特別。

Page 17: Swiftビギナーズ倶楽部 vol.2

わからないー! だれか教えてー♪

Swiftビギナーズ倶楽部は

わからないことは周りの人に聞いて、気軽に教え合って、 皆の疑問を1つでも解決して、楽しんで開発していきましょう。

Page 18: Swiftビギナーズ倶楽部 vol.2

Let's study together!

Thank you :)