【发布时间】:2017-11-29 09:22:28
【问题描述】:
我使用 NSProgress 通知复杂任务的进度(该任务由许多子任务组成,可以由其他子任务组成)。
我在 startTask 方法中创建主要进度:
- (void)_startTask
{
_progress = [NSProgress progressWithTotalUnitCount:100]; //sometimes crash is here
<...>
}
没有当前进度:
(lldb) po [NSProgress currentProgress]
无
有时我会因为奇怪的 stackTrace 崩溃:
0: 0x000000018539a7e8 in object_isClass()
1:KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED 中的 0x0000000186b39fe0 ()
2: 0x0000000186b384bc 在
NSKeyValueWillChangeWithPerThreadPendingNotifications ()
3: 0x0000000186cac9c0 in -[NSProgress _setValueForKeys:settingBlock:] ()
4: 0x0000000186cacc7c in -[NSProgress setTotalUnitCount:] ()
5: 0x0000000186cab718 in +[NSProgress progressWithTotalUnitCount:] ()
这段代码在 mainThread 中执行。
为什么会发生这种情况,我可以做些什么来避免这种情况?
【问题讨论】:
-
这有什么更新吗?请我陷入同样的问题
标签: ios nsprogress