0

我有一个可以通过用户单击选择的对象。根据应用程序的当前要求,在任何时候,在应用程序执行期间的任何时候都不会选择超过其中的一项。

我实施了一种机制来执行此操作,如下所示:

  • 这些对象中的每一个都有一个唯一标识符作为属性。
  • 当每个对象被创建时,它订阅NSNotificationCenter监听MY_OBJECT_SELECTED通知。
  • 选择每个对象后,它会发布MY_OBJECT_SELECTED通知,并将其唯一 ID 作为userInfo字典的一部分。
  • 然后,当每个对象收到通知时,它会检查它的 id 是否与 userInfo 中的相同。如果是,它什么也不做,但如果不是,它将自己设置为未选中。

这是解决问题的好方法吗?如果没有,你会怎么做?

4

2 回答 2

1

这是一种不错的方法,尽管它不是很有效。您拥有的对象越多,您花在比较 ID 上的时间就越多。最简单的方法是将对象指针和 ID 存储在映射表(或类似表)中并记住最后选择的对象。每当您选择一个新对象时,您都会清除最后一个选定对象的选择标志,然后查找新对象并设置其选择标志。但是,它要求您保留对象的集合。

使用这种方法更新选择所需的时间与您拥有的对象数量无关。

于 2013-05-02T11:13:41.973 回答
0

如果对象遍布整个应用程序,即它是否是各种类的成员。您可以拥有一个相同类型的全局对象,并将其分配给仅被触摸的对象。在步骤中,它将像:

  • 有一个对象类型的全局变量。
  • 在任何对象触摸分配 globalObject = currentObject;
  • 在整个应用程序中对 globalObject 执行所有操作,例如调用方法和修改对象成员(检查 nil 以确保安全)。
  • 使用新的触摸重新分配给不同的对象。
于 2013-05-02T11:23:57.723 回答