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

クロージャでプロパティを初期化する

Caution! この記事はまだSwift2.2です! 普段何気なく使っているのですが、たぶん初めて見た人は混乱するだろうなと思ったので。 extension UIImage { private static var contentPlaceholder: UIImage = { return UIImage(named: "placeholder_b.png")! }()…

RxSwiftのbindToについて

RxSwiftにはbindToが大きく分けて2種類あります。 引数にobserverを取るものと、binderを取るものです。 引数にvariableを取るものは基本observableを取るものと動きが同じです。 以下のような特徴があります。 引数にobserver/variableを取るもの 内部的に…

同じワークスペース内で作ったSwiftモジュールを使う

こういう感じの構成で、libの中をPokemonKitとしてモジュールにして、sourcesをアプリにしたいと思った。 app $ tree . ├── Makefile ├── README.md ├── build.ninja ├── lib │ └── pokemon.swift └── sources └── main.swift モジュールにしなければ、swift…

enumの値チェック

enumをrawValueから生成するときに、値を制限したいことはよくあると思います。 Himotokiと組み合わせることを前提に、rawValueが不正だった場合に詳細なエラーメッセージを含むDecodeError.TypeMismatch をthrowするinitializerを作ったので共有します。 な…

TVMLKitchen

こんにちは、皆さんAppleTV楽しく使っていますか?私はなんと毎日使っています。なぜなら案件についているからです! というのは実は(!)冗談で、今このゲームにハマっているからです。 アスファルト8:Airborne | Asphalt 8: Airborne | 公式サイト Audiのフ…

テストコードを読んでライブラリの難しいコードを理解する

こんにちは、@toshi0383 です。 この1年間振り返ると様々なライブラリにお世話になってきました。ライブラリは中身の実装は知らなくても使えるよう、「まアいつものアレでしょ」という処理が抽象化されているというのが便利な点なわけですが、ソースコードを…

Swift Package Manager のPackageがlinkerエラーでビルド失敗する

久しぶりにSwift Package Managerを触ったら、 この構成で、 $ ls Package.swift main.swift $ cat main.swift print("hello") $ cat Package.swift import PackageDescription let package = Package( name: "Queue", dependencies: [] ) こんなエラーが出…

sniper, the OSX app terminator in Swift

sniper というコマンドラインツールをSwiftで作ったので、作る過程で得られた知見も交えて紹介したいと思います。 github.com TL;DR sniper は、アプリのプロセスを探して殺すことができる簡単なコマンドです。 bin/sniper をどこかにコピーして使ってくださ…

Swift array map の性能測定の続き

前回の続き 前回の記事に対して@es_kumagai さんからフィードバックをいただきました。 今週忙しくて、やっと見る時間が取れました。 結論から言うと、今回の検証方法(ターミナルからswiftやswiftc を利用する)においては、標準のmapより速い実装が手に入…

Swift arrays are not lists

第2回 カジュアル Swift 勉強会 @ 青葉台で簡単に共有した内容をまとめました。 当日迷宮入りしてしまった部分も調査を進めましたので、ご興味あればご確認ください。 背景 Advanced Swiftを読んでいたら、mapはreduceを使うと簡単に実装できるよね、とい…