1

我有一个在整个应用程序中使用的单例类。我正在研究另一个需要向这个单例类发送数据的类,但可以将数据成束发送,这将冻结主线程。

我应该创建这个单例类的另一个实例,还是应该创建一个数据导入实用程序作为一个单独的类?

4

4 回答 4

5

顾名思义,单例意味着只有一个实例浮动。应该分派冻结主线程的数据,类的另一个实例无济于事。

于 2012-04-05T20:36:19.603 回答
0

随心所欲地创建另一个实例,但不要再称它为单例了。

于 2012-04-05T20:39:23.017 回答
0

实际上,您应该在另一个线程中发送此数据,并且可能在发送数据时使用 NSLock,这样您就不会遇到任何访问错误。

利用:

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

不要创建单例类的另一个实例,否则应用程序的其余部分将无法访问它,因为它是单例。

希望能帮助到你。

于 2012-04-05T20:40:53.867 回答
0

根据定义,您应该只有 1 个单例实例。如果它是一个正确构造的单例,它应该不可能有超过 1 个!

如果您遇到主线程无响应的问题,请将需要加载的数据分解到较小的卡盘中。这样,在加载不同的数据块之间,主线程可以处理它需要的任何事件,其他对象可以访问单例中的数据。

你也可以实现一个惰性数据加载机制,当一个对象想要来自单例的信息时,单例检查你的新类是否正在等待给它新的信息,然后加载它。

于 2012-04-05T20:45:09.180 回答