忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

dealloc内でremoveFromSuperview使用について

わか

iOSにてviewの終了処理時にdeallocが呼ばれますが、その中でaddSubViewしたviewをremoveFromSuperviewすると予期せぬ関数が呼ばれる場合があります。
あるviewのremoveFromSuperviewを実行するとviewが剥がされますが、その際にレイアウトが変更されたと判断され、viewWillLayoutSubviewsやviewDidLoadが呼ばれる場合があります。
全ての状況で実行されるわけではありませんが、発生が分かりにくいため結構やっかいです。

画面を閉じる処理が遅くなったので気づきましたが、放置していたら恐ろしいことになっていました。(画面を閉じる際にviewDidLoadで画面展開処理をしていたので)

まあ、私が知らなかっただけで本来は予期せぬことではありませんが・・・
今後は気をつけます。


拍手[0回]

PR