お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

メモリ管理

よくわかってないけどとりあえず

 

はじめにViewDidLoadでMutableArrayをallocすると、

(@propertyもつくって落ちにくくする)

今回特にaddObjectは明示的にしてなくて、

よそからひっぱってきてそのまま値を入れて使っている場合、

途中で中身を入れ替えたいときに一旦からにする際、

 

①まず、「中身が入っている」という判定に、

1●if (self.array != nil){     と書くか

2●if ([self.array count] > 0) {  と書くか迷った。

 

②次にその「中身を空にする」という作業で

1■self.array = nil;        と書くか

2■[self.array removeAllObjects];  と書くか迷った。

 

結果、●のときは、

中身はたしかに入っているはずなのに、

2の判定式は通らないという現象が...なんでだろう。

だからとりあえず!=nilをつかった。

 

■のときは、ログを吐くと

1をつかうとself.array = (null)となっているのに対し、

2をつかうとself.array = ()となった。

addObjectsしてないからremoveは危険かも、と思ったけど

object自体はなくなりはしないみたい。

property効果かな。

このへん本当に難しくて違いがわからない(;_;)

結局どっちが使えばいいのかわからず、今のとこは2を使ってる。

誰か教えて...orz