我正在使用核心数据在应用程序中进行一些后台处理.后台处理在子managedObjectContext上完成.上下文初始化
appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// the moc in appDelegate is created with .MainQueueConcurrencyType
mainThreadMOC = appDelegate.managedObjectContext!
backgroundMOC = NSManagedObjectContext(concurrencyType:NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)
backgroundMOC?.parentContext = mainThreadMOC
Run Code Online (Sandbox Code Playgroud)
后台处理按以下方法完成:
// download all new transaction log entries
func syncItems() {
... set up the query object for parse
let moc = CoreDataStore.sharedInstance.backgroundMOC
// perform download
moc?.performBlock( {
self.runQuery(query) // Download stuff und do some core data work
})
}
Run Code Online (Sandbox Code Playgroud)
调试器显示块内的所有工作确实在后台线程中.
当我从主线程调用此函数并立即使用冗长的核心数据操作阻止主线程(用于测试目的)时,我看到后台线程停止并且仅在主线程空闲时继续执行.
// this is called from a view controller in the main thread
syncItems() // …Run Code Online (Sandbox Code Playgroud) 我试图通过实现通用容器类来理解C++模板模板.这是代码:
using namespace std;
template <typename T, template <typename STORETYPE> class Container>
class Store {
public:
~Store() {};
Store() {};
void someFunc( const T & ) {};
//...
private:
Container<T> storage;
};
int main(int argc, char *argv[])
{
Store<int,deque> myStore; // error here, won't compile!
}
Run Code Online (Sandbox Code Playgroud)
上面的代码生成编译器错误消息.错误消息是:
"模板模板参数具有与其对应的模板模板参数Store aStack1不同的模板参数;
我不知道为什么.怎么了?