3

取决于您用作标签的数字,性能方面是否有任何优势?

我有 4 组用标签标记的对象。有什么理由不跳过数字吗?即,我可以让第一组从 0 到 99,第二组从 1000 到 1099,第三组从 2000 到 2099,第四组从 100,000 到 100,099?

请注意,我实际上并没有在我的代码中使用这么多对象。所以我不是在问拥有这么多对象的性能问题。我只想知道跳过标签是否不好。它帮助我组织我的代码和我的想法。有人知道标签是如何存储的吗?

4

2 回答 2

3

该标记只是存储为 NSInteger 属性。据我了解,-viewWithTag:搜索视图层次结构,检查每个视图是否有匹配的标签,然后返回第一个匹配项。跳过数字不应该有性能损失。

于 2012-07-13T18:40:45.997 回答
1

标签存储为整数。iOS 上的整数使用 4 个字节存储。无论您使用哪个值,将它们与另一个整数值进行比较都需要完全相同的时间。

也就是说,可能存在用于存储视图层次结构的内部优化。举个例子,Apple 可能会选择使用某种树结构来将标签映射到视图。这部分我无法回答,因为这些事情是苹果开发人员内部的。

你有两个选择;

  1. 测量自己(使用仪器)。
  2. 不要担心,因为无论如何影响几乎是看不见的。
于 2012-07-13T18:40:48.923 回答