iOS5のcontainsObject

 どうやら、i0S5になって、MSArrayのcontainsObjectメソッドの扱いが少し変わったようです。


 containsObjectは、NSArrayの中にcontainsObject:objectのobjectで指定したオブジェクトが含まれているかどうかをBOOL型で返すメソッドです。
 iOS4.3までは、objectをreleaseした後でも、NOを返してくれていたんですが、iOS5になって"EXC BAD ACCESS"という実行時エラーになってしまいました。


 まあ、存在しないオブジェクトを引数に与えている方が悪いんですが、以前はそれで動いていたので、そういう使い方をしていたんです。
 releaseした後、nilを入れておくと、うまく動くようになったので、どうやら単なるidの値がNSArrayに入っているかどうか見るだけでなく、そのオブジェクトを一度評価しているみたいです。
 たぶん、その評価でreleaseされているから"EXC BAD ACCESS"がでるんじゃないかと。


 releaseしたオブジェクトには、きちんとnilを入れておくと良い、という事がますます重要になってきたようです。