Swiftポケットリファレンスを読んだ後のメモ
iOSのレイア構造
名前 | 概要 | フレームワーク |
---|---|---|
Application | アプリ | |
Cocoa Touch | 画面タッチなどの機能 | UIKit(画面構成やタッチ) MapKit(地図関連機能) |
Media | グラフィックス/オーディオ/ビデオなどの機能 | AVFoundation(メディアの再生) AVKit(メディア再生UI) Core Image(画像加工) Core Graphics(グラフィック関連) |
Core Services | 内部データ/位置情報/センサーなどの機能 | Core Motion(端末のセンサー) Core Location(位置情報関連機能) Foundation(データ管理) LocalAuthentication(生体認証) |
Core OS | iOS内のほぼ全ての機能の基本的な部分を管理 | |
Hard Ware | ハードウェア |
iOSアプリの構造
アプリを起動するとアプリケーション全体を管理するUIApplicationオブジェクトが生成される、
UIApplicationオブジェクトは、AppDelegate.swiftで管理されるデリゲートに渡される
UIApplication
↪︎AppDelegate
↪︎RooViewController
Responder Chain (レスポンダチェーン)
UIViewなどのオブジェクトを経由してUIApplicationまで到達することをレスポンダチェーという
イベントが最初に発生するオブジェクトをファーストレスポンダ(First Responder)と呼ぶ
特殊文字
String文字列に以下の特殊文字を含めることができる
特殊文字 | 概要 |
---|---|
\0 | ヌル文字 |
\\ | バックスラッシュ |
\t | タグ |
\n | 改行コード(LF)MacOS X以降 |
\r | 改行コード(CR)MacOS 9以前 |
" | ダブルクオーテーション |
' | シングルクオーテーション |
範囲演算子
演算子 | 例 | 概要 |
---|---|---|
... | a...b | aからbまで(bを含む) |
..< | a..<b | aからbまで(bを含まない) |
アクセス修飾子
名前 | 概要 |
---|---|
open | どこからでもアクセス可能 |
public | どこからでもアクセス可能、同一のプロジェクト外ではoverrideは不可 |
internal | 同一のプロジェクト内のみアクセス可能(既定) |
fileprivate | 同一ファイルのみのアクセス可能 |
private | 同一の定義の中飲みアクセス可能 |
override | スーパークラスから継承したメソッドの上書き |
class | クラスメソッドとして定義 |
static | クラスメソッドとして定義、同一のプロジェクト外ではoverrideは不可 |
可変長引数
可変長引数とは引数を任意の個数に設定できる引数
func total(num: Int...) -> Int {
var s = 0
for n in num {
s += n
}
return s
}
print(total(num: 1,2,3)) // Print [6]
UIResponder
UIViewの上層クラスで、画面の接触や揺れのイベントを管理する
import UIKit
class SampleViewController: UIViewController {
// このViewControllerがFirstResponderになれるようにする
override var canBecomeFirstResponder: Bool {
return true
}
// 揺れが始まった
override func motionBegan(_ motion: UIEventSubType, with event: UIEvent?) {}
// 揺れが止まった
override func motionEnded(_ motion: UIEventSubType, with event: UIEvent?) {}
// タッチ中
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {}
// タッチ終了時
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {}
}
UserDefaults
KeyValue型の形式で少量のデータの保存を管理する
大きなデータやファイルの書き出しはCoreDataを利用する
データの暗号化がされてない