objc

学び、今後知識をつけていきたいことについて

こんにちは!
アドベントカレンダー2記事目です!
今回は自身で悩んだこと、今後知識として強化していきたいことについて書かせていただきます。
今後さらに以下で書いていく内容について人に説明できるようにきちんと理解していきたいと思いました!

悩んだこと

悩んだことはtableViewの更新とセルの再利用です・・・。
ボタンがタップされた時にTableViewの表示を更新しようとしたのですが、
更新の仕方がわからず、調べてみました。

[tableView reloadData];

ボタンのタップイベントでreloadDataを記述するだけでセルの更新ができました!
reloadDataを記述する前はスクロールしないとセル内容の更新ができませんでした。
調べている時に「~でreloadDataを呼ぶだけ」などの記述をよくみたため惑わされました・・・・
reloadDataは固定のところで呼ぶのではないことを学びました。
当たり前ですが処理したいところで呼ぶことが大切でした。

セルの再利用

セルの更新に関連するのはセルの再利用です・・・・
画面から見えなくなったセルをスクロールした時に次のセルとして使用することをセルの再利用と言うそうです。
セルを再利用せずに生成しまくっていると処理が重くなったりするため、
基本的にセルは再利用するものだそうです。
いくつか調べたのですが、もちろんセルを再利用せずに生成し続ける方法もあるようです。
しかし、大体の記事では再利用するようにと書かれていました。
セルの再利用がどの部分を意味するのか最初全く見当がつきませんでしたが、
おまじないのように書いていたセル生成の後の
cell==nil・・・・・あの部分が再利用の記述をしていることがわかりましたが詳しくは今後学んでいきたいと思います。
セルの再利用で気をつけなければいけないことは、前のセル状態が残ってしまったりっすることが多く、
そこでつまずく人が多いようです・・・(私もそのうちの一人です)
セルに表示する内容は配列などきちんと別で管理しておくことで対処できるようです。

Notification

未だに苦手なものの一つです。最初「通知名」と「通知で呼び出されるメソッド名」の違いがわかりませんでした。
あとは何回も間違えてしまったaddObserverとremoveObserverです・・・・
addしてからremoveするまでの間でaddで指定したメソッドを呼ばなければいけない。

//通知の監視を始めます。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationCallMethod) 
name:@"tutti" object:nil];

この例であれば通知名は@“tutii”
この通知名の通知があった時に呼ばれるのがここで指定しているメソッド名です。
メソッド間で行き来できるので便利な機能ではありますが
むやみやたらにNotificationを多用するとスパゲッティ状態になってしますので使用のしすぎに注意する。