SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
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言語の関数を書き換えるらしい。
面白そうだけど難しそう!誰か教えて!
タブーをあえてやるのも面白い!

Weitere ähnliche Inhalte

Was ist angesagt?

Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」technocat
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
 
Streaming data processing ライブラリの紹介 (主に Conduit)
Streaming data processing ライブラリの紹介 (主に Conduit)Streaming data processing ライブラリの紹介 (主に Conduit)
Streaming data processing ライブラリの紹介 (主に Conduit)krdlab
 
apg4b 4.05 ポインタ
apg4b 4.05 ポインタapg4b 4.05 ポインタ
apg4b 4.05 ポインタAPG4b
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPUgos-k
 
while文
while文while文
while文APG4b
 
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...Masahiro Sakai
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
for文
for文for文
for文APG4b
 
マーク&スイープ勉強会
マーク&スイープ勉強会マーク&スイープ勉強会
マーク&スイープ勉強会7shi
 

Was ist angesagt? (18)

Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
Subprocess no susume
Subprocess no susumeSubprocess no susume
Subprocess no susume
 
テーマ「最適化」
テーマ「最適化」テーマ「最適化」
テーマ「最適化」
 
Nginx lua
Nginx luaNginx lua
Nginx lua
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
Boost.Coroutine
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
 
Streaming data processing ライブラリの紹介 (主に Conduit)
Streaming data processing ライブラリの紹介 (主に Conduit)Streaming data processing ライブラリの紹介 (主に Conduit)
Streaming data processing ライブラリの紹介 (主に Conduit)
 
apg4b 4.05 ポインタ
apg4b 4.05 ポインタapg4b 4.05 ポインタ
apg4b 4.05 ポインタ
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
Common LispでGPGPU
Common LispでGPGPUCommon LispでGPGPU
Common LispでGPGPU
 
llvm入門
llvm入門llvm入門
llvm入門
 
while文
while文while文
while文
 
Ilerpg Study 002
Ilerpg Study 002Ilerpg Study 002
Ilerpg Study 002
 
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
“Symbolic bounds analysis of pointers, array indices, and accessed memory reg...
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
Das 2015
Das 2015Das 2015
Das 2015
 
for文
for文for文
for文
 
マーク&スイープ勉強会
マーク&スイープ勉強会マーク&スイープ勉強会
マーク&スイープ勉強会
 

Andere mochten auch

静的リンクライブラリ
静的リンクライブラリ静的リンクライブラリ
静的リンクライブラリushiostarfish _
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessingushiostarfish _
 
Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Yuki Higuchi
 
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, TierraLa espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, TierraJorge Diderot Chelén Franulic
 
Blur based Weber–Fechner law
Blur based Weber–Fechner lawBlur based Weber–Fechner law
Blur based Weber–Fechner lawushiostarfish _
 
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭tototti
 
いろいろ迷子のレンダラー Lost Child Render
いろいろ迷子のレンダラー Lost Child Renderいろいろ迷子のレンダラー Lost Child Render
いろいろ迷子のレンダラー Lost Child Renderushiostarfish _
 
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2masaaki komori
 
new Objctive-C literal syntax
new Objctive-C literal syntaxnew Objctive-C literal syntax
new Objctive-C literal syntaxWataru Kimura
 
Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application ArchitectureKoji SHIMADA
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
Rubyはとても「人間的」
Rubyはとても「人間的」Rubyはとても「人間的」
Rubyはとても「人間的」Kazuhiro Serizawa
 
本格的に始めるzsh
本格的に始めるzsh本格的に始めるzsh
本格的に始めるzshHideaki Miyake
 
Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方Kindai University
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪Kunihiro TANAKA
 
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強することプログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強することなおき きしだ
 

Andere mochten auch (20)

静的リンクライブラリ
静的リンクライブラリ静的リンクライブラリ
静的リンクライブラリ
 
Real timeimageprocessing
Real timeimageprocessingReal timeimageprocessing
Real timeimageprocessing
 
Lt cocoa
Lt cocoaLt cocoa
Lt cocoa
 
Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29
 
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, TierraLa espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
La espiral de la tercera ley de kepler. Astronomía, Sistema Solar, Tierra
 
Blur based Weber–Fechner law
Blur based Weber–Fechner lawBlur based Weber–Fechner law
Blur based Weber–Fechner law
 
SWWDC2012_11_17
SWWDC2012_11_17SWWDC2012_11_17
SWWDC2012_11_17
 
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
2013-07-12 (金) レッツゴーデベロッパー変真 前夜祭
 
いろいろ迷子のレンダラー Lost Child Render
いろいろ迷子のレンダラー Lost Child Renderいろいろ迷子のレンダラー Lost Child Render
いろいろ迷子のレンダラー Lost Child Render
 
Metal Fluid Simulation
Metal Fluid SimulationMetal Fluid Simulation
Metal Fluid Simulation
 
これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2これからはじめるCoda2とSublime Text 2
これからはじめるCoda2とSublime Text 2
 
new Objctive-C literal syntax
new Objctive-C literal syntaxnew Objctive-C literal syntax
new Objctive-C literal syntax
 
Next Generation Web Application Architecture
Next Generation Web Application ArchitectureNext Generation Web Application Architecture
Next Generation Web Application Architecture
 
Sinatraのススメ
SinatraのススメSinatraのススメ
Sinatraのススメ
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
Rubyはとても「人間的」
Rubyはとても「人間的」Rubyはとても「人間的」
Rubyはとても「人間的」
 
本格的に始めるzsh
本格的に始めるzsh本格的に始めるzsh
本格的に始めるzsh
 
Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方Ruby1.9のfiberのかっこいい使い方
Ruby1.9のfiberのかっこいい使い方
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
プログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強することプログラマとして仕事をするために勉強すること
プログラマとして仕事をするために勉強すること
 

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