0

私は現在、ソケット接続を使用してハードウェア デバイスと通信する必要がある iOS 用のアプリケーションを開発しています。したがって、私は NSStream でシングルトン オブジェクトを使用しています。この時点まで、すべてが期待どおりに機能します。

問題は、接続が終了または中断された場合、接続を再開できないことです (これはドキュメントに記載されています)。したがって、私の考えは、シングルトンを破棄して再作成することです。このようなクラスのコピーは 1 つしか存在しないことが示されているため、これはシングルトン パターンに干渉するべきではありません。

この問題を解決する方法を知っている人はいますか? シングルトンの再作成を含まない他のソリューションは高く評価されます。

4

3 に答える 3

2

シングルトンは破棄されません。おそらく、シングルトンクラスを再度開き、古い接続を閉じる/リセットするメソッドを含める必要があります。

于 2012-10-26T14:46:01.787 に答える
2

シングルトン クラスにロジックを追加して、デバイスへの接続がアクティブかどうかをテストしてみませんか。死んでいる場合は、接続を閉じて、新しい接続を開きます。これは事実上、シングルトンを再作成して破棄することによって実行しようとしているのと同じことですが、シングルトン パターンをそれほど乱用することはありません。また、シングルトンのみが接続を認識し、カップリングを低く保つため、よりシンプルにする必要があります。

于 2012-10-26T15:04:16.043 に答える
1

変数を一度だけ作成できる Singleton の核心は、変数が終了するまでアプリに沿って存続することを意味します。遅延読み込みとして初期化します。つまり、使用時に初期化してから初期化します。これはRAMに静的に割り当てられるため、いつでも呼び出して再利用できます。これにより、時間を大幅に節約できます。そのため、Singleton を破棄してはならず、内部でいくつかのロジックを実行してください。

この助けを願っています。

于 2016-01-14T15:16:21.050 に答える