Objective c 使用计时器删除对象

Objective c 使用计时器删除对象,objective-c,Objective C,我有两个NSMutableArray,collectables和CollectableView 我的应用程序由一个角色组成,他四处移动并收集收集收集物(硬币、苹果、香蕉等)以获取积分 我希望这些收藏品在一段时间后消失。。然而,我不知道应该在哪里放置NSTimer,以避免破坏模型/视图/控制器的设计 例如,如果我在每个模型中放置一个单独的计时器,则模型不知道该视图,并且无法删除该视图 如果我将NSTimer放入控制器中,我将需要创建另一个数组,该数组包含屏幕上的所有收藏品,其中一个首先过期。计时器

我有两个NSMutableArray,collectables和CollectableView

我的应用程序由一个角色组成,他四处移动并收集收集收集物(硬币、苹果、香蕉等)以获取积分

我希望这些收藏品在一段时间后消失。。然而,我不知道应该在哪里放置NSTimer,以避免破坏模型/视图/控制器的设计

例如,如果我在每个模型中放置一个单独的计时器,则模型不知道该视图,并且无法删除该视图

如果我将NSTimer放入控制器中,我将需要创建另一个数组,该数组包含屏幕上的所有收藏品,其中一个首先过期。计时器的方法是每秒钟触发一次,并在到期时移除每件收藏品


有更简单、更好的方法吗?

您当前的情况倾向于在控制器中保留计时器,因为控制器可以访问每个数据模式和视图,您也可以访问阵列。另一种方法是使用NSNotificationCenter。首先尝试一下,如果不起作用,请告诉我们。

大多数游戏使用一个或多个游戏时钟模拟这种“状态监控”。您可以这样做:

  • 创建包含持续时间和函数的数据结构 指针和对象变量数组。对于这个例子,让我们调用 它是腐朽的
  • 在前面(主)创建一个静态、可变的DecayEvent数组 控制器,具有一些不错的访问器方法
  • 选择适当的事件处理间隔。这是必须的 大到足以处理您认为最大数量的事件 将是,但足够小,不会延迟用户体验
  • 在前端控制器上创建一个方法,该方法将通过 衰变事件的数组。每次调用该方法时,它都会 迭代数组并按 事件处理间隔。如果衰减事件持续时间低于 零然后“触发事件”(基本上是触发其回调函数) 在另一个线程中,使用回调参数)
  • 在主线程中创建NSTimer。将其设置为调用您的 每个事件处理间隔的处理方法
  • 你将不得不调整相当多,以使一切工作的方式,你想要的,但上述步骤通常会工作

    祝你好运