短い背景:私は現在、Mac用のXcodeでプログラムを作成しています。これは概念的にはコード全体ではありませんが、 iPhone。それは、外部センサーからのブルートゥースを通して絶えずデータを受信することを含む(ユーザーインタラクションに関係なく、データを受信しなければならない)。私はMacでIOBluetoothを使って簡単なプログラムを作っています。ペアでデータを受け取ることができます.BTstackとjailbroken iPhoneを使って、iPhoneのBluetoothチップにアクセスする予定です。分析するココアプログラムのプログラムレイアウトと保存に関する提案
私はあまりにも遠くなる前に、私は手続き型プログラミングに慣れていてObj-Cは私の新しい獣なので、概念的にこのプログラムを正しくレイアウトしたいと思っています。私が述べたように、私はiPhoneに移動するときにできるだけ多くのコードを保存できるようにしたいと思っています(私はビューなどのために異なるクラスがあることを理解していますが、類似点はあります)。
1)私のプログラムでは、ユーザーの操作に関係なく、常にバックグラウンドでデータを受信します(つまり、ユーザーがプログラムを起動してBTデバイスを選択すると、データが流れます)。それ以前にそのデータをユーザに提示することができる。だから(質問)、どのようにこれをレイアウトするだろうか?私はすべての私のBTコードをappdelegateに置くことを考えていました。そして、View Controllerを持っていました(Macでは、ウィンドウを扱うものになりますが、iPhoneでは複数のサブビューコントローラを持つタブコントローラになります)。 「コントローラ」(この場合はappdelegate)によってアクセスされるデータ(将来の参照のためのログファイルとしても)を分析して格納するモデルです。このレイアウトは理にかなっていますか?それはkosher MVC/CocoaのすべてのBTコードと分析をappdelegateに入れるか、それとも自分のクラスに入れるべきか(macとiPhoneの両方のBTコードが絶えずデータのバーストを受信しなければならないことを知っている) ?どのように改善することができますか?
2)分析側の関連する質問。私は、解析を行っているネット上にある単一のCocoaサンプルを見つけられませんでした(私はプログラムを見つけましたが、使用するモデルの説明はありません)。保存される基本データは1時間あたり〜50kBと非常に小さいです。しかし、結果(スペクトルと滝のプロットを含む)は1時間あたり2MBを超える可能性があります(これは1日に数時間実行するプログラムです)。 「外出先で」分析し、わかっているスクロールバッファーに結果をスローするのは非常に速いですが、ユーザーが過去の特定の時間セグメントを振り返ることができるようにしたいと考えています。私が持っている質問は、モデルオブジェクトがデータを分析して結果を基本データと一緒に保存するか、モデルが基本データのみを保存し、そのデータをコントローラに返して分析し、それを分析してビューに提示するべきかということですこれは非常にCPUの重い場合は、データを数分もregraphing、時間を聞かせて)?
私が適切な基礎を築いていると感じたら、後で何時間ものコーディング(および固定/デバッグ)を省くことができると思っています。あなたの質問1については
ありがとう。あなたが書いたことを理解してください:AppDelegateだけを残して(アプリ起動後の処理を行う)、Bluetoothデータの受信と解析のためのコントローラ、ビューコントローラ(iPhoneのタブビュー用のネストされたもの) 、最後にモデルを保存します。 2つのフォローアップの質問:モデルがデータの分析を行うのか、それとも受信したものを保存するのか?そして、BTコントローラーはシングルトンでなければならないと思っています(複数のインスタンスが存在することは絶対にありません。常に入ってくる必要があります)。 –
私はBTコントローラがシングルトンであることに同意します。アプリデリゲートの中に1つのインスタンスを単独で作成することは、本当にシングルトンにすることなしには十分です。私は分析コードをどこに置くべきかについてはわかりません。私は少なくともそれをBTコントローラから独立させるだろう。後で生データを再解析してグラフを生成したい場合があります。分析コードを別にすると便利です。 – Yuji