【发布时间】:2012-12-15 09:07:33
【问题描述】:
尽管关于该主题的话题很多,但我仍然不清楚何时选择哪种方法。 我希望通过讨论一个具体的例子,我最终会“明白”。
注意:我的语言是 Cocoa,但一般问题不是特定于语言的。
我有一个任务队列,我想用它来:
- 从我的代码中的任何位置访问以添加或删除计划任务
- 定期自动处理计划任务
第一次使用 TaskQueue 时,我希望 TaskQueue 启动一个线程,然后定期唤醒以处理任务。
显然,我至少需要两个变量:
- 存储任务的数组
- 处理任务的线程实例
由于我只想要一个任务队列和一个线程来处理这些任务,我有两种选择:
-
使 TaskQueue 成为一个单例类(例如使用 http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html 中描述的 CWL_DECLARE_SINGLETON_FOR_CLASS_WITH_ACCESSOR,我相信我将不得不修改 CWLSynthesizeSingleton.h 文件以在初始化时启动线程。)
让任务数组和线程实例都是静态的(按照此处建议的方法:How do I declare class-level properties in Objective-C?)
在这种特定情况下,显然有一种方法比另一种更好吗?如果有,为什么?
【问题讨论】: