読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #238】protocol extension(プロトコル拡張) ~Xcode7から使える

Xcode7から使えるSwift2.0ではクラスや構造体、
列挙型だけでなく、プロトコルも拡張できるようになった。

さわりを勉強したので、残しておく。

2つのプロトコルを用意した。

protocol Programmer{
    var name: String{get}  // 名前
    var isUseMac: Bool{get}  // Macを使っているか
}

protocol IOSProgramable{
    var experimenceYears: Int{get}  // iOS開発の経験年数
}


用意したプロトコルを使用する。
■Swift1.2までの場合

/* Swift1.2まで */
struct Person: Programmer, IOSProgramable{
    let name: String
    let isUseMac: Bool
    let hobby: String

    var experimenceYears: Int{
        return 2
    }
}

let kobayashi = Person(name: "小林", isUseMac: true, hobby: "旅行”)
if kobayashi.isUseMac{
    print("もちろんMacでしょ", appendNewline: false)
}

■Swift2.0からの場合

/* Swift2.0から */
// ↓がProtocol Extension(プロトコル拡張)
// IOSProgramableを採用している場合、
// ProgrammerプロトコルのisUseMacにデフォルト値をセットする拡張を実施

// このextensionはProgrammerとIOSProgramableの両方を採用している場合のみ有効
extension Programmer where Self: IOSProgramable{
    // iOSアプリ開発やってるならMac使ってるはずだから初期値をtrue
    var isUseMac: Bool{return true}
}

struct Person:Programmer, IOSProgramable{
    let name: String
    let hobby: String

    var experimenceYears: Int{
        return 2
    }
}

let kobayashi = Person(name: "小林", hobby: "旅行")
if kobayashi.isUseMac{
    print("もちろんMacでしょ", appendNewline: false)
}

■おわりに
上記は実用的な例ではないですが、
これから使えるとこないか考えてみる。


変わった形のUSBメモリを発見↓

SP シリコンパワー USB3.0 Jewel J80シリーズ 32GB 防水 防塵 耐衝撃 亜鉛(Zn)合金デザイン Mac対応 永久保証 USBメモリ SP032GBUF3J80V1T



【参考情報】
iOSアプリ開発未経験の人向け
iOSアプリ開発をはじめたとき最初に買った書籍
【アプリ作成未経験の人向け】
Storyboardを使って画面を作成していく。
手順にしたがって操作していくと、ボタンの作成やWebViewの作成などができる。
アプリって、こんな感じで作るんだというのを体験できる。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾

③中級者、上級者向け

詳解 Swift

詳解 Swift