水夫と戯れて

Appleの開発言語Swiftのことを書く。公開されている範囲内で書いています。文章に「?」が含まれているところはよく理解していないところ。

Cポインタ

cocoaapi.hatenablog.com

四則演算

目次> 定数

define

目次> Cのdefineに変わるものってなあに? private let 下記例はenumでもいいのだけれど、defineの代わりをするならprivate let ? //Modal windowの表示 private let RETURN_NO :Int = 0 // モーダルの戻り判定 NO private let RETURN_YES :Int = 1 // モー…

モーダルウインドウを開く・閉じる

目次> Mac NSApplication.runModalForWindow()でモーダルウインドウを開く NSApplication.stopModal()としてNSWindow.orderOut(self)でモーダルウインドウを閉じる //Modal windowの表示 //NSApplication runModalForWindow @IBAction func function008(send…

SwiftからObjective-Cクラスを使う

目次>クラス>継承 NSAppricationのサブクラスをswiftで使う NSPrincipalClassを設定する <key>NSPrincipalClass</key> <string>MyApplication</string> @objc()でクラスを設定 import AppKit @objc(MyApplication) class MyApplication: NSApplication { }

Computed プロパティ(Computed Properties)

タプル

目次> switch文で複数の値を使うことができたりする。 数値の代わりに _ を使うことができる。 範囲を示す場合は(-2...2, -2...2)のように...で表す。 バリューバインディング //Value binding func function002() { let thePoint = (0, 2) switch thePoint …

ネスト化タイプ

目次> アクションでのネスト化タイプ ネスト化タイプへの参照

プロトコル

目次> 文法 protocol InheritingProtocol: SomeProtocol, AnotherProtocol { //プロトコル定義 } protocol PrettyTextRepresentable: TextRepresentable { func asPrettyText() -> String } 必要とされるプロパティ 必要とされるメソッド タイププロトコル …

プリミティブタイプ

目次> 数値を変数にセットするとき、カンマの代わりに_を使って桁区切りにすることができる。 let count = 3_000_000_000_000 数値を文字列に let age = response.toInt() |C Type|Swift Type| |bool|CBool| |char, signed char|CChar| unsigned char CUnsig…

型変換

目次> 型変換のクラス階層を定義 タイプチェック downcasting AnyObjectの型変換 Any AnyObject 数値を文字列に toInt()関数 func function001() { let question : String = "30" var age : Int = question.toInt()! println("\(++age)") }

ジェネリックス

目次> クラスや関数を使用する側が扱う型を指定できる

その他の演算子

目次>

文法構造

目次>

目次> 型 名称 意味 例 String 文字列 Character Bool ブール true/false Int Double 型は通常nilを持つことができない nilを持たせる場合はOptional

構造体

パターンマッチ

目次> forやswitchで使う

エクステンション(Extentions)

目次> Obj-Cのカテゴリのような感じで機能拡張ができる。 プロパティの追加 インスタンスメソッドとタイプメソッドの追加 新しい初期化を提供 サブスクリプトの定義 ネスト化タイプの定義と使用 エクステンションの文法 Computed プロパティ イニシャライザ …

オプショナルチェーン(Optional Chaining)

目次> チェーン内のどれかがnilの場合にfalseにするなどして使う アンラップの代わりとしてのオプショナルチェーン オプショナルチェーンのモデルクラスを定義 オプショナルチェーンを通してプロパティを呼ぶ オプショナルチェーンを通してメソッドを呼ぶ オ…

Optional(オプショナル)

目次> 型のあとに?がつく Stringのあとに?をつけてString? Stringまたはnil という意味 Swiftでは基本的にnilは含まれない。nilが含まれるのを許可する場合は?をつける オプション型を非オプション型にする オプション型を非オプション型にすることをアンラ…

自動参照カウント(ARC)

目次>

解放

目次> Deinitialization deintを使う deinit { // perform the deinitialization } class Player { var coinsInPurse: Int init(coins: Int) { coinsInPurse = Bank.vendCoins(coins) } func winCoins(coins: Int) { coinsInPurse += Bank.vendCoins(coins) …

初期化

目次> ストアされたプロパティの初期値のセット イニシャライザ デフォルトのプロパティ値 初期化のカスタマイズ パラメータの初期化 ローカルと外部パラメータ名 オプションのプロパティタイプ 初期化で固定されたプロパティを修正する デフォルトのイニシ…

継承

目次> サブクラス化 SomeSuperclassクラスを継承してSomeClassを作成する場合 class SomeClass: SomeSuperclass { // class definition goes here } 初期化メソッドなど、上書きする場合は、superの初期化メソッドを呼び出してから class Bicycle: Vehicle {…

サブスクリプト

目次> クラス、構造体、列挙はサブスクリプトを定義できる コレクション、リスト、シーケンスの要素にアクセスしやすくするためのもの subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a…

メソッド

目次> 書き方は関数と同じ インスタンスメソッド class Counter { var count = 0 func increment() { count++ } func incrementBy(amount: Int) { count += amount } func reset() { count = 0 } } メソッドのローカル、外部パラメータ名 インスタンスメソッ…

プロパティ

目次> Lazy Stored Properties @lazy var importer = DataImporter() ストアされたプロパティとインスタンス変数 プロパティ監視 グローバルとローカル変数 タイププロパティ self プロパティの追加はエクステンションで可能

クラス

目次> クラス名は大文字で始まる class クラス名 {} 初期化するときは var instance = ClassName() ストラクチャ・クラスの定義 struct Resolution { var width = 0 var height = 0 } class SomeClass { // class definition goes here } プロパティの定義 …

列挙

目次> Enumerations enum SomeEnumeration { // enumeration definition goes here } caseが使える enum CompassPoint { case North case South case East case West } このようにもかける enum Planet { case Mercury, Venus, Earth, Mars, Jupiter, Saturn…

クロージャー

目次> reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 }) ショートハンド引数名 $0 , $1 1番めのパラメータ、2番めのパラメータ オペレーター関数 Capturing Values