0
看起來像在Xcode7中打開-com.apple.CoreData.ConcurrencyDebug
開關,即使您只是讀取屬性,也會發生多線程違規。這是預期的行爲嗎?Xcode7讀取屬性時發生ConcurrencyDebug併發衝突?
-(NSManagedObjectContext *)newPrivateManagedObjectContext
{
NSManagedObjectContext *newContext =
[[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType>];
[newContext setParentContext:<some shared MOC with NSMainQueueConcurrencyType];
return newContext;
}
-(void)someMethod
{
NSManagedObjectContext *context = [self newPrivateContext];
NSManagedObject *mo = [context objectWithID:objectID]; // concurrency voilation
// assuming the above worked you would still get
if (mo.someProperty == nil) // also a concurrency violation
{
}
}
目前好像Xcode是希望我們寫在performBlock*
塊與NSManagedObjectContext
每一個互動。也許我錯過了什麼?
湯姆 - 感謝您的快速響應。我幾年前就讀過,只有在分配屬性時才需要塊。我仍然可以在腦海中看到文章的各個部分......只是不記得它是哪一個。我要去坐在課堂後面一段時間。 : -/ – memmons
@memmons - 不能相信你讀過的所有東西......即使在SO上;-)但是,你可以相信湯姆所說的話。 –
@JodyHagins事實上,我知道湯姆的資格。這種情況讓我想起了幾個月前,當我得知花生醬事實上並不是綠色的時候(對於像我這樣的紅/綠色盲的人來說顯然是一個常見的錯誤)。我會在「我所假設的事情是真的,但絕對不是。 – memmons