Koichi Adachi

smart phone app development tips

Objective-c

pass a enum key Dictionary to Swift from ObjC

expect receive enum-key dict (Dictionary<EnumType,T>) from Objective-C. but can't receive direct EnumType key because XCode abandon generate method. ObjC's NSDictionary not allow Int for key. to use instead of NSNumber. definition in swift @objc publi</enumtype,t>…

自作ライブラリをシームレスにObjCからSwiftへ移行する話(iOS Advent Calendar 2016/12/15)

これまでObjCで書いていたライブラリを'少しずつ'Swiftに移行する話です。 # このトピックで実現すること - 既存ライブラリ(ObjC)のプロジェクトはそのまま残す。 - Swiftで書きたい(移行したい)ロジックから新規ライブラリプロジェクトに記述(移動)する…

block構文で再帰処理を書いてみる(NSNullを削除)

いまのところの最新はこれ。 もうちょっとすっきり書きたいなぁ id (^func)(id); __block __weak id (^weak_func)(id) = func = (id) ^(id collection){ __block id mutableDic = [@{} mutableCopy]; [collection enumerateKeysAndObjectsUsingBlock:^(id ke…

Block構文で記述した処理をインスタンスメソッドとして動的追加し、selectorで受けられるようにする

特定のクラスのインスタンスしか受けられないメソッドを、 新しくクラス定義せずに受けられるようにする方法。 さらにイマイチなことに、呼び出したいメソッドがコールバックにSEL型しか指定できなかったりする。 新しくクラス定義(.hと.m)を追加するのも微…

private propertyにカテゴリからアクセスする

.hに書いてしまうと容易に外からアクセスできてしまうため、 .mにプライベートな変数を置くことがままあります。 ただ、それだとカテゴリで機能を拡張した場合にアクセスできないので、 どうしたもんかなーと思っていました。 ちょっと考えたらできました。