1

背景

  • 我有一个存储在瞬态属性中的计算值。
  • 每次我的应用程序启动时,都需要更新瞬态。
  • 启动时间真的很慢(即10-15秒)
  • Instruments 确认更新非常昂贵。

问题

可以将计算值存储在持久属性中吗?

我会使用Martin Brugger 的 Dependent Properties来保持计算的值是最新的。

更多信息

我计算的值是数千个对象的持续时间:

Name                       Duration
Users                      70s            
    Proposal.doc           35s   
      12:32-12:32          5s   
      13:11-13:11          30s   
    Proposal2.doc          35s   
      14:32-14:32          15s   
      15:11-15:11          20s   
    ...thousands more objects...

我试过的

  • 我已经使用预取最小化了触发的故障数量,setReturnsObjectsAsFaults:NO但它使用了大量内存并且仍然需要很长时间。

  • 我已经使我的瞬态更新代码尽可能高效。

  • 我知道我可以在后台线程上获取并使用进度条,但我希望用户根本不必等待。

4

1 回答 1

2

我不确定我是否完全理解这个问题,但我认为你所问的简单答案是“当然”。:-)

拥有一个瞬态的、实时计算的“currentTotalDuration”值一个“cachedTotalDuration”属性没有任何问题。当“currentTotalDuration”更新时,把它扔进“cachedTotalDuration”就完成了。对我来说,将持久缓存属性与仅在需要更新时使用的“实时计算”瞬态值一起使用听起来完全合理。

我不熟悉 Martin Brugger 的 Dependent Properties,但听起来大部分艰苦的工作已经为您完成了。

我希望我回答了你实际提出的问题。:-D

于 2010-11-22T14:47:34.873 回答