SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
小さなコード
大きな仕事
@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日土曜日

Weitere ähnliche Inhalte

Andere mochten auch

+ 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
 

Andere mochten auch (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
 
районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...районный конкурс библиотечных проектов по популяризации и применению коми язы...
районный конкурс библиотечных проектов по популяризации и применению коми язы...
 

Ähnlich wie 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
 

Ähnlich wie 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