arc環境で メモリリークを起こす 7つの方法
TRANSCRIPT
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言語の関数を書き換えるらしい。面白そうだけど難しそう!誰か教えて!
タブーをあえてやるのも面白い!