The Pragmatic Ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

Objective-C

SwiftでKVOするときはObjective-Cのプロパティ名を使う

当たり前といえば当たり前なんですが、 iOSのKVO(addObserver(_:forKeyPath:options:context:))はObjective-CのNSObjectのメソッドなので、指定するkeyPathはObjective-Cのプロパティ名じゃないとだめです。 例えばUIViewのisHiddenをKVOしたい場合は↓のよう…

WebP.frameworkの作成方法

libwebpをclone > git clone https://chromium.googlesource.com/webm/libwebp 最新のをcheckout > git checkout 0.4.4 iosbuild.shを実行 > iosbuild.sh iosbuild.shでautomakeがないとか怒られた場合は以下を入れる Command line tools > xcode-select --i…

UnitTestでNSUserDefaultsに保存したデータを消す方法

UnitTestだとremoveObjectForKeyや NSUserDefaults.standardUserDefaults().removeObjectForKey("key") resetStandartUserDefaultsを呼んでもデータが消えません NSUserDefaults.resetStandardUserDefaults() 解決方法 setObjectでnilを突っ込む NSUserDefau…

Objective-Cでnil結合演算子的なことをするには

Swiftだとnil結合演算子として"??"が用意されてますが、 Objective-C(というかC)でも似たようなことができます。 ここ(Conditionals - Using the GNU Compiler Collection (GCC))に書いてあるように3項演算子の真ん中を省略すると、条件式が非0の場合に条…

xcodebuildでdevice向けのビルドするときのdestinationの指定方法

以前xcodebuildのパラメータの指定方法についてこちらに書きました。 Travis CIでObjective-C/Swiftのテストを実行する - Pragmatic ball boy テストするときはシミュレータを指定するのでこれで問題ないのですが、 実機向けのstaticライブラリを用意したり…

Travis CIでObjective-C/Swiftのテストを実行する

[環境]Xcode 6.1 Swift,Objective-Cどちらの場合でもこの方法でいけるはずです。 Travis CIにドキュメントが用意されていますが、xctoolを使った例が示されているので無視したほうがよいです。xctoolはAppleが用意した標準のビルドツールではなく、Facebook…

Pixateが1年間無料に

iOSでCSS風にViewのデザインができる有料ライブラリであるPixateが 1年間無料で使えるようになったみたい。(これまで使ってた人も新規も) http://www.pixate.com/blog/article/2013-07-01-pixate-free/ iOS7が出る前に客をつかんでおきたいってことかな

Effective Objective-C 2.0

Effective Objective-C 2.0がようやく先月発売されたのでKindleで買って読んでみました。 それほど目新しいことが書いてあるかというとそうではないのですが、 Effectiveなんとかシリーズ全般に言えることですが、なんでそうすべきなのかの理由が論理的にち…

戻り値はidよりもinstancetype

メソッドの戻り値の型だけにつかえるキーワードみたいなもので A method with a related result type can be declared by using the type instancetype as its result type. instancetype is a contextual keyword that is only permitted in the result typ…