謎は全て解けた・・・ | Ukisoft for Ameba Blog Only

Ukisoft for Ameba Blog Only

人生に悩む社会人8年目の徒然日記へようこそ。

あー、本当、マジ最低なことでした。
UITableViewCellカスタマイズするときに、再利用が原因で処理が上手く動かないと、いろいろ調べていたのですけど、使いまわししてても、きちんと対象のインスタンスを指定して処理を動かせていたのです。

だったらなぜ!!?

実は、UITableViewCustomCellの上にUICustomViewをaddSubviewして、さらにUICustomViewにUIViewをaddSubviewしていおり、そのUIViewに対して色の変更を行う処理を動かそうとしていました。
これが動かなかったのですが、ずーっと、UICustomViewのインスタンスが正しく指定できないことが原因だと思っていたのですが、そうではなく、それにaddSubviewしたUIViewこそが使いまわされていたのでした!!!!
ので、UICustomViewは正しく指定できていたので、なかなか解決できなかったのです。

で、なぜUIViewが使いまわされていたかというと・・・この部分が最低なのですが、本来であれば、メソッドファイルに、

@interface UICustomView()
@property (nonatic, retain) UIView *view;

@end


@implements UICustomView

@synthesize view;

- (void)changeColor {
    view = [[UIView allodinit];
    view.backgroundColor = [UIColor redColor];
}

@end


と書かなければならない箇所を、

@implements UICustomView

UIView view;

- (void)changeColor {
    view = [[UIView allod] init];
    view.backgroundColor = [UIColor redColor];
}

@end

と書いていたため、なんか共通化されていたっぽいのですよ!!
でも、別にクラス変数ではないのですよね・・・他のクラスからは呼べないし。

もう、細かいところまで調査する元気が無いのですが、まぁそんな感じです。
@propertyを使うか使わないかは、getter、setterの自動生成だけではないのね・・・知らなかった・・・。
明日、もし元気になったら続き調べます。。。


うき。