取决于您用作标签的数字,性能方面是否有任何优势?
我有 4 组用标签标记的对象。有什么理由不跳过数字吗?即,我可以让第一组从 0 到 99,第二组从 1000 到 1099,第三组从 2000 到 2099,第四组从 100,000 到 100,099?
请注意,我实际上并没有在我的代码中使用这么多对象。所以我不是在问拥有这么多对象的性能问题。我只想知道跳过标签是否不好。它帮助我组织我的代码和我的想法。有人知道标签是如何存储的吗?
取决于您用作标签的数字,性能方面是否有任何优势?
我有 4 组用标签标记的对象。有什么理由不跳过数字吗?即,我可以让第一组从 0 到 99,第二组从 1000 到 1099,第三组从 2000 到 2099,第四组从 100,000 到 100,099?
请注意,我实际上并没有在我的代码中使用这么多对象。所以我不是在问拥有这么多对象的性能问题。我只想知道跳过标签是否不好。它帮助我组织我的代码和我的想法。有人知道标签是如何存储的吗?
该标记只是存储为 NSInteger 属性。据我了解,-viewWithTag:
搜索视图层次结构,检查每个视图是否有匹配的标签,然后返回第一个匹配项。跳过数字不应该有性能损失。
标签存储为整数。iOS 上的整数使用 4 个字节存储。无论您使用哪个值,将它们与另一个整数值进行比较都需要完全相同的时间。
也就是说,可能存在用于存储视图层次结构的内部优化。举个例子,Apple 可能会选择使用某种树结构来将标签映射到视图。这部分我无法回答,因为这些事情是苹果开发人员内部的。
你有两个选择;