LoginSignup
2
1

More than 5 years have passed since last update.

Swift雑多メモ

Last updated at Posted at 2017-08-10

ついにSwift、はじめてみた。ううぇー
当方の経験言語は、ActionScript3、C、C++、C#、JS。
2系と3系の谷にもがき苦しむ様をお楽しみ下さい。

デリゲート

Swiftに限った話じゃないけど。
オブジェクト思考のためのデザインパターンのひとつ。

「あるクラスは、他のクラスのインスタンスに、処理を任せることができる。」というようなこと。

playground
// プロトコルを作る。
protocol Mochi {
    func sayHello() -> String
}

// 依頼人クラス
class Hoge {

    // ここで、プロトコルに従うクラスのインスタンスを用意する。
    var delegate: Mochi!
    func say() -> String {
        return delegate.sayHello()
    }
}

// 代理人クラス。クラスの後ろにプロトコルを書く。
class Piyo: Mochi {
    func sayHello() -> String {
        return "Hello, Piyopiyo"
    }
}

let hoge = Hoge()
let piyo = Piyo()
hoge.delegate = piyo    // 代理人を指定。
hoge.say()    // "Hello, Piyopiyo"

Delegateを使う最大のメリットは、対象となるクラスが「何を委譲するか」をプロトコルとして定めることで、「誰に委譲するか」をまったく意識せずに設計できる点です。

プロトコルとデリゲートのとても簡単なサンプルについて

nil

nullのこと。

コメントより、

一般的に変数を定義した時に、値を入れる前はnullになるようになっているので、空の状態とみなせますが、どちらかと言うと、nilは「空である」という状態を表す値です。

変数にはなにかしら値がはいっている、ということか。
たしかにNullエラーとか、むなしいもんなぁ(遠い目)

"!" と "?"

オプショナル型というものらしい。
その変数にnilが入る可能性がある場合は型の後ろに!か?をつける。

コメントより、

Int?Optional<Int> のシンタックスシュガーです。

どこよりも分かりやすいSwiftの"?"と"!"
SwiftのOptional型を極める

UIColor

16進数で打ち込むときは以下のよう。

UIColor
UIColor(rgba: 0xFF00EEFF)

Xcode8から使えるようになったというColor Literalがかわいい。

Swift3以降のUIColorの使い方

Closure

無名関数。クロージャ。

[Swift] Closureの書き方いろいろ

as!

キャストには変わりないんだけど保険?がかけられるぽい。

as:キャストが成功すると保証されるときに使用(アップキャストなど)
as!:強制ダウンキャストの際に使用
as?:ダウンキャストが成功するか分からない場合に使用(失敗すると戻り値はnil)

Swift as!について

collectionViewからcollectionViewCellを参照

let cell = collectionView.cellForItem(at: indexPath) as! CalendarCell

関数へのアクセス

なにもつけないとinternal扱いになる

public: 同じモジュール内だけでなく、別のモジュールからでもアクセスできる
internal: 同じモジュール内からのみアクセスできる
private: 同じソースファイル内からのみアクセスできる

Swift 3からのアクセスコントロール

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1