ARC環境で
メモリリークを起こす
  7つの方法
①循環参照

@interface Hoge : NSObject
@property (strong, nonatomic) Hoge *hoge;
@end
@implementation Hoge
@end



     Hoge *h = [[Hoge alloc] init];

     h.hoge = h;
②MEMCPY

Hoge *h = [[Hoge alloc] init];

memset(&h, 0, sizeof(id));
③OBJC_MSGSEND

Hoge *h = [[Hoge alloc] init];

objc_msgSend(h, NSSelectorFromString(@"retain"));
④CFRETAIN

Hoge *h = [[Hoge alloc] init];

CFRetain((__bridge CFTypeRef)h);
⑤__BRIDGE_RETAINED

Hoge *h = [[Hoge alloc] init];

void *p = (__bridge_retained void *)h;
⑥CLASS_REPLACEMETHOD

 Hoge *h = [[Hoge alloc] init];

 class_replaceMethod(
   [Hoge class],
   NSSelectorFromString(@"release"),
   imp_implementationWithBlock(^(){}),
   "");
⑦MACH_OVERRIDE

どうもC言語の関数を書き換えるらしい。
面白そうだけど難しそう!誰か教えて!
タブーをあえてやるのも面白い!

ARC環境で メモリリークを起こす 7つの方法