SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
小さなコード
大きな仕事
@TeamMOSA2
http://www.teammosa2.com/
13年9月21日土曜日
めずらしく
サンプルを作った
https://github.com/TamaDev/
ISSHO_AutoHook_Sample
13年9月21日土曜日
何をするコード?
UIControlの派生クラス
(UIButtonとか)の
タッチイベントに”自動”で
前処理を差し込む。
13年9月21日土曜日
どうやってるの?
Method swizzleという技で
元々の機能を”動的”に
差し替えることができる。
13年9月21日土曜日
実用例
AutoNibL10n
https://github.com/AliSoftware/
OHAutoNIBi18n
xib上のラベルを自動ローカライズ
13年9月21日土曜日
重要なヘッダ
#import <objc/runtime.h>
13年9月21日土曜日
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日土曜日
何が嬉しいの?
どのモジュールの
どのIBActionメソッドかを
フック先で判別できる。
13年9月21日土曜日
例えばこんなの
13年9月21日土曜日
(ほぼ)すべてのボタン類
どこから呼ばれたかを
各メソッドにイチイチ
記述してはいけない。
13年9月21日土曜日
後は自分で読め
ISSHOAutoHook.mは
か100行に満たない
13年9月21日土曜日
説教blog
いじわるファンクションコール
http://blog.teammosa2.com
13年9月21日土曜日

Más contenido relacionado

Destacado

+ Task 14 planning magazine advert 2
+ Task 14 planning magazine advert 2+ Task 14 planning magazine advert 2
+ Task 14 planning magazine advert 2caitlinejm
 
фотогалерея
фотогалереяфотогалерея
фотогалереяnurbolat84
 
11.volans 如何修改volans ir150使用者密碼
11.volans 如何修改volans ir150使用者密碼11.volans 如何修改volans ir150使用者密碼
11.volans 如何修改volans ir150使用者密碼臺灣塔米歐
 
第一組Invertor專題製作
第一組Invertor專題製作第一組Invertor專題製作
第一組Invertor專題製作saveme0903
 
районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...Arfenia Sarkissian
 

Destacado (8)

+ Task 14 planning magazine advert 2
+ Task 14 planning magazine advert 2+ Task 14 planning magazine advert 2
+ Task 14 planning magazine advert 2
 
фотогалерея
фотогалереяфотогалерея
фотогалерея
 
7
77
7
 
2014 summer
2014 summer2014 summer
2014 summer
 
11.volans 如何修改volans ir150使用者密碼
11.volans 如何修改volans ir150使用者密碼11.volans 如何修改volans ir150使用者密碼
11.volans 如何修改volans ir150使用者密碼
 
第一組Invertor專題製作
第一組Invertor專題製作第一組Invertor專題製作
第一組Invertor專題製作
 
2009 66-3
2009 66-32009 66-3
2009 66-3
 
районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...
 

Similar a DevSap20130921

GUI Test is (not) necessary
GUI Test is (not) necessaryGUI Test is (not) necessary
GUI Test is (not) necessaryHiroshi Maekawa
 
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentEnpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentYukio Saito
 
QtとC++でGUIプログラミング
QtとC++でGUIプログラミングQtとC++でGUIプログラミング
QtとC++でGUIプログラミングseanchas_t
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5Hiroshi Oyamada
 
ぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvcぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvckarupanerura
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackTakahiro Yoshimura
 
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckIndy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckUehara Junji
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118Uehara Junji
 

Similar a DevSap20130921 (11)

GUI Test is (not) necessary
GUI Test is (not) necessaryGUI Test is (not) necessary
GUI Test is (not) necessary
 
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironmentEnpit bizapp_aiit_20130902_for_WindowsEnvironment
Enpit bizapp_aiit_20130902_for_WindowsEnvironment
 
QtとC++でGUIプログラミング
QtとC++でGUIプログラミングQtとC++でGUIプログラミング
QtとC++でGUIプログラミング
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5
 
ぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvcぼくがかんがえたさいきょうのMvc
ぼくがかんがえたさいきょうのMvc
 
Kifの紹介
Kifの紹介Kifの紹介
Kifの紹介
 
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
 
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ckIndy(Invokedynamic) and Bytecode DSL and Brainf*ck
Indy(Invokedynamic) and Bytecode DSL and Brainf*ck
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
groovy 2.1.0 20130118
groovy 2.1.0 20130118groovy 2.1.0 20130118
groovy 2.1.0 20130118
 
Mecha-Mozilla
Mecha-MozillaMecha-Mozilla
Mecha-Mozilla
 

DevSap20130921