- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的小型 Core Data 应用程序中,我有一些 NSTableView View 在实体模式下与 NSArrayController Controller 绑定(bind)。
当我尝试在后台线程中将大量数据导入到我的表中时,在成功添加一些导入(从数十到数百项)后,我会崩溃并显示日志:
严重的应用程序错误。核心数据更改处理期间捕获异常:*** 枚举时集合发生变异。NSHashTable (%@) {[5](实体:Word;id:0x1001dd4b0;数据:{.......此处实体描述.... } ....
...和堆栈跟踪:
#0 0x7fff83e0e2fa in mach_msg_trap
#1 0x7fff83e0e96d in mach_msg
#2 0x7fff8816c614 in _CGSSynchronizeWindowBackingStore
#3 0x7fff88152169 in _CGSLockWindow
#4 0x7fff88158cff in CGSDeviceLock
#5 0x7fff81ecae43 in ripd_Lock
#6 0x7fff81eca746 in ripl_BltShape
#7 0x7fff81ec7d86 in ripc_Render
#8 0x7fff81ec5317 in ripc_DrawRects
#9 0x7fff88158641 in CGContextFillRects
#10 0x7fff8818ee1a in CGContextFillRect
#11 0x7fff86e712f8 in NSRectFillUsingOperation
#12 0x7fff86f2152e in NSDrawWindowBackground
#13 0x7fff86ea16c2 in -[NSThemeFrame drawWindowBackgroundRect:]
#14 0x7fff86e6eb9a in -[NSFrameView drawThemeContentFill:inView:]
#15 0x7fff86e68aa5 in -[NSThemeFrame drawRect:]
#16 0x7fff86e68131 in -[NSView _drawRect:clip:]
#17 0x7fff86e65907 in -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
#18 0x7fff86e64ee8 in -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]
#19 0x7fff86e6179a in -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]
#20 0x7fff86ddaff6 in -[NSView displayIfNeeded]
#21 0x7fff86dd5ea2 in _handleWindowNeedsDisplay
#22 0x7fff80099a2d in __NSFireTimer
#23 0x7fff815aa678 in __CFRunLoopRun
#24 0x7fff815a884f in CFRunLoopRunSpecific
#25 0x7fff82c3991a in RunCurrentEventLoopInMode
#26 0x7fff82c3971f in ReceiveNextEventCommon
#27 0x7fff82c395d8 in BlockUntilNextEventMatchingListInMode
#28 0x7fff86dab29e in _DPSNextEvent
#29 0x7fff86daabed in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
#30 0x7fff86d708d3 in -[NSApplication run]
#31 0x7fff86d695f8 in NSApplicationMain
假设更新表存在问题(枚举不是线程安全的),我尝试通过在导入开始之前禁用 Controller 和表来解决此问题:
[wordsController setEditable:NO];
[wordsController setAutomaticallyPreparesContent:NO];
[wordsTable setEnabled:NO];
但这并没有帮助。在导入过程中,我仍然看到新实体被添加到故事中,直到崩溃。
有人知道禁用 NSArrayController 在后台处理期间跟踪更改的技巧是什么吗?或者也许这是其他问题?
非常感谢您的任何提示。
最佳答案
您是否在导入或 UI 更新中使用快速枚举(“for (id object in collection) {...}”)?如果是这样,请注意您无法在枚举期间修改集合(添加或删除)。
这也可能是插入到刷新数组 Controller 的同一上下文中的结果。在这种情况下,您需要一个与“显示结果”上下文分开的“导入”上下文。在导入过程中,您将合并每个 x 个导入对象的上下文,从而允许刷新“显示结果”上下文。
关于multithreading - 枚举时集合发生突变,导致 NSTableView、NSArrayController 和 NSThread 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3925054/
我有几个线程。我想运行它们以确保它们正在一个接一个地执行。[运行线程1];[运行线程2];当我这样做时,线程 2 正在运行,而无需等待线程 1 完成。我需要这个,因为我需要线程 1 中的值,以便在线程
NSThread 异步下载图片 在IOS中处理多线程有三个方案 , NSThread 、NSOperation 、GCD 。当然GCD应该是最方便的 ,我们一个一个学 。先理解底层的,最后再使用最方便
我正在创建一个新线程,它在每隔一段时间后运行我的一个方法。 现在我正在做的事情如下: NSThread *thread = [[NSThread alloc] initWithTarget:self
我正在开发一款游戏模拟游戏,希望加快比赛模拟速度。在给定日期,可能有 50 多场比赛需要模拟。目前,我循环遍历每个并告诉他们模拟自己,但这可能需要很长时间。我本来希望 1) 覆盖“忙碌”屏幕 2) 为
我有一个 iPhone 应用程序,在其中显示一个从 RSS 提要加载的表格 View 。当 View 加载时,我调用此方法在新的 NSThread 中运行: - (void)start:(NSURL*
是否可以在单独的线程中运行类方法(以“+”开头)?通常我调用像 [myClass myController]; 这样的方法,我尝试了 [NSThread detachNewThreadSelector
我正在使用 NSOperationQueue 来管理一个相当长的 iOS 应用程序阶段,所以我想异步管理它。在那个阶段,我通过直接使用 calloc 函数在 C 中分配大数组。“大”是指 1024x2
为什么我线程的 Retain count = 2?它在启动方法后增加,为什么? Retain 计数如何为 NSThreads 工作 @implementation ViewController - (
因为 NSThread 无法连接 我尝试了下一个方法,它似乎工作正常,但仍然是非常糟糕的解决方案还是足够好? // init thread NSThread *mythread = [[NSThrea
使用 4 NSThread 将 1000 个元素(例如整数元素)添加到数组中。如果添加一个对象需要 1 个时间单位,那么添加 1000 个对象将需要 1000 个时间单位。通过使用 4 个线程,我想将
我目前正在学习IOS Threading编程......我遇到了一个问题: 我的代码来了,请看一下: int main(int argc, const char * argv[]) { @au
这是我创建线程的方式: readFromWebThread = [[NSThread alloc] initWithTarget:self selector:@selector(loadThread:
我有一个触发线程的静态对象,但每当线程尝试执行选择器时,我都会收到“[NSThread initWithTarget:selector:object:]: target does not implem
我正在处理其他人的代码。我遇到了一行代码 [NSThread detachNewThreadSelector:@selector(myMethod) toTarget:self withObject:
我有很多 NSThreads,我想在它们工作的时候 sleep 。我该怎么做? iOS SDK 中是否有 WinApi 函数 WaitForSingleObject/WaitForMultipleOb
我有一个函数,当我的应用程序进入后台模式时它会被调用。如果用户重新打开应用程序,我想停止线程。到目前为止,我尝试的任何方法都不起作用。 到目前为止,这是我的代码: class Neversleep {
我从购买的媒体流 SDK 库中获得 C++ 回调,它在内部创建了多个线程。 具体来说,当库想要记录一条消息时,我会收到回调。有时我在某些 NSThread 的上下文中被调用,那里有一个自动释放池,但有
我正在使用这样的线程, [NSThread detachNewThreadSelector:@selector(myfunction) toTarget:self withObject 线程运行正常,
我想创建一个不是主线程的工作线程,这样我就可以调用 ... [self performSelector:@selector(doStuff) OnThread:self.myWorkerThread
我正在开发一个应用程序,它在读取 XML 文件时使用 NSThread 加载 viewControllers 的内容。 我是这样完成的: -(void)viewDidAppear:(BOOL)anim
我是一名优秀的程序员,十分优秀!