DevSap20130921

378 views

Published on

Google Analyticsを総てのUIControlのタッチイベント呼び出しに挟み込むサンプルの説明です。

Published in: Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
378
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DevSap20130921

  1. 1. 小さなコード 大きな仕事 @TeamMOSA2 http://www.teammosa2.com/ 13年9月21日土曜日
  2. 2. めずらしく サンプルを作った https://github.com/TamaDev/ ISSHO_AutoHook_Sample 13年9月21日土曜日
  3. 3. 何をするコード? UIControlの派生クラス (UIButtonとか)の タッチイベントに”自動”で 前処理を差し込む。 13年9月21日土曜日
  4. 4. どうやってるの? Method swizzleという技で 元々の機能を”動的”に 差し替えることができる。 13年9月21日土曜日
  5. 5. 実用例 AutoNibL10n https://github.com/AliSoftware/ OHAutoNIBi18n xib上のラベルを自動ローカライズ 13年9月21日土曜日
  6. 6. 重要なヘッダ #import <objc/runtime.h> 13年9月21日土曜日
  7. 7. Swizzle実例 void Swizzle(Class c, SEL orig, SEL new) { Method origMethod = class_getInstanceMethod(c, orig); Method newMethod = class_getInstanceMethod(c, new); if( class_addMethod(c, orig, method_getImplementation(newMethod), method_getTypeEncoding(newMethod)) ){ class_replaceMethod(c, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod)); }else{ method_exchangeImplementations(origMethod, newMethod); } 13年9月21日土曜日
  8. 8. 何が嬉しいの? どのモジュールの どのIBActionメソッドかを フック先で判別できる。 13年9月21日土曜日
  9. 9. 例えばこんなの 13年9月21日土曜日
  10. 10. (ほぼ)すべてのボタン類 どこから呼ばれたかを 各メソッドにイチイチ 記述してはいけない。 13年9月21日土曜日
  11. 11. 後は自分で読め ISSHOAutoHook.mは か100行に満たない 13年9月21日土曜日
  12. 12. 説教blog いじわるファンクションコール http://blog.teammosa2.com 13年9月21日土曜日

×