2012-04-05 5 views
1

私は、アプリケーション全体で使用されているシングルトンクラスを持っています。私はこのシングルトンクラスにデータを送る必要がある別のクラスに取り組んでいますが、メインスレッドをフリーズする束でデータを送ることができます。Objective Cでシングルトンクラスの別のインスタンスを作成する

このシングルトンクラスの別のインスタンスを作成する必要がありますか、別のクラスとしてデータインポートユーティリティを作成すべきですか?

+2

他のインスタンスを作成した場合は、シングルトンではなくなり、1つのオブジェクトしか保証されていなかった場合でも失われます。たぶんそれはOKですが、あなたはパターンをシングルトンからオブジェクトプール(または何か)に変更しました。 –

+0

間違っている間に、私は誰かがダブルトーンを発明してくれるのが大好きです。 – CodaFi

+0

doubletonが面白い – iosdevnyc

答えて

5

シングルトン、名前が示すように、周りに浮いのみ単一インスタンスを持っていることを意味しています。メインスレッドをフリーズするデータはディスパッチする必要があります。クラスの別のインスタンスはそれを助けません。

0

他のインスタンスをすべて作成しますが、これ以上シングルトンと呼んではいけません。

+0

別のインスタンスを作成すると、パターンとシングルトンに基づいたすべてのアプリケーションロジックが壊れてしまいます。それは悪いアプローチです。 –

+0

プログラムの他の部分との関連性に依存して、そのシングルトンの性質があります。私は以前のシングルトンクラスが複数のインスタンスを可能にするように再構築されたいくつかのケースを見ました。 –

0

実際にこのデータを別のスレッドで送信し、データが送信されている間にNSLockを使用してアクセスエラーがないようにする必要があります。

使用:それはシングルトンだから

[self performSelectorOnBackGround:@selector(sendDataToSingleton:) withObject:@"data to send"]; 

シングルトンクラスまたはアプリケーションの他の部分の別のインスタンスを作成しませんが、それにはアクセスできません。

希望します。

0

定義上、シングルトンのインスタンスを1つだけ持つ必要があります。それが正しく構築されたシングルトンであれば、1を超えることはできません!

メインスレッドが応答しない問題が発生している場合は、小さなチャックにロードする必要があるデータを破棄します。このようにして、異なるデータチャンクをロードする間に、メインスレッドは必要なイベントを処理し、他のオブジェクトはシングルトン内のデータにアクセスできます。

また、オブジェクトがシングルトンからの情報を必要とするときに、シングルトンは新しいクラスが新しい情報を与えるのを待っているかどうかを確認してからロードします。

関連する問題