我有一个在整个应用程序中使用的单例类。我正在研究另一个需要向这个单例类发送数据的类,但是可以发送数据,这会冻结主线程。
我应该创建这个单例类的另一个实例,还是应该创建一个数据导入实用程序作为单独的类?
答案 0 :(得分:5)
Singletons,顾名思义,意味着只有一个 单个 实例。应该调度冻结主线程的数据,另一个类的实例也无济于事。
答案 1 :(得分:0)
创建您想要的另一个实例,但不要再称它为单例。
答案 2 :(得分:0)
实际上,您应该在另一个线程中发送此数据,并且可能在发送数据时使用NSLock,因此您没有任何访问错误。
使用:
[self performSelectorOnBackGround:@selector(sendDataToSingleton:) withObject:@"data to send"];
不要创建单例类的另一个实例,否则应用程序的其余部分将无法访问它,因为它是一个单例。
希望它有所帮助。
答案 3 :(得分:0)
根据定义,您应该只有一个单例实例。如果它是一个正确构造的单例,则不应该有超过1个!
如果您遇到主线程无响应的问题,请将需要加载的数据分解为较小的卡盘。这样,在加载不同数据块之间,主线程可以处理它需要的任何事件,而其他对象可以访问单例中的数据。
您还可以实现一个惰性数据加载机制,当一个对象需要来自单例的信息时,单例检查您的新类是否在等待为其提供新信息然后加载它。