Правильный подход здесь называется Model-View-Controller, и это основная архитектура во всем Какао. Модель хранит ваши данные (на время забудьте о сокете; таблицам все равно, откуда поступают данные). Представления (таблицы) отображают данные, а контроллеры (таблицы) соединяют их.
Таким образом, у вас будет набор объектов модели, содержащих данные. Они не заботятся о том, как данные отображаются, и их не волнует, откуда они берутся (сокет). Они просто хранят данные. Иногда ими управляет Singleton, иногда указатель на модель передается каждому контроллеру представления при создании контроллеров представления. Любой подход в порядке. Передача модели в контроллеры представления немного более гибкая, но требует немного больше кода.
Тогда есть еще один объект, ваш SocketClient
, который выбирает данные и обновляет модель. SocketClient
не содержит данных. Это касается только сокета и обновления модели. Он ничего не знает о контроллерах представления, и они ничего не знают об этом.
Когда модель изменяется, контроллеры представления уведомляются. Это чаще всего обрабатывается с помощью NSNotification
, но также может быть обработано с помощью KVO или делегирования.