quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

NSScreencast Episode #124 Method Swizzling

Method Swizzling - NSScreencast

Objective-C runtimeでメソッドの実装を置き換える

  • #import <objc/runtime.h>
  • swizzle - がぶ飲みする、かき混ぜ
    • class_getInstanceMethod
    • class_addMethod
    • method_getImplementation
    • method_getTypeEncoding
    • method_exchangeImplementations
  • category
    • Foo+Swizzling
    • fkb_bar
  • FKBSwizzler helper
    • [FKBSwizzler swizzleClass:self selector:@selector(bar) newSelector:@selector(fkb_bar)];
  • UIViewController+Analytics.m
    • load
      • viewDidAppear ⇄ fkb_viewDidAppear
    • fkb_viewDidAppear
      • [self fkb_viewDidAppear:animated]; <- オリジナルの挙動
      • NSLog(@"viewDidAppear: called on %@ (animated? %@)", self.title ?: self.class