【问题标题】:Can I use a custom class method on NSArray to return a constant?我可以在 NSArray 上使用自定义类方法来返回常量吗?
【发布时间】:2013-07-23 13:52:34
【问题描述】:

我经常需要在多个地方引用一组字符串(比如团队名称)。该数组的内容不会改变。

为了实现这一点,我定义了自己的类MyConstants。在标题中,我定义了一些不相关的常量字符串和数字。在实现文件中,我把类做成了单例,然后添加了一个类方法arrayOfTeamNames

要访问数组,我使用 [Constants arrayOfTeamNames]。

我可以接受吗?

我在考虑 NSString 和 NSArray 本身如何通过类方法处理创建。例如,如果我想要一个空数组,我可以使用 [NSArray array] - 所以大概 'array' 是 NSArray 上的一个类方法。

因此,我是否应该使用类别将“+arrayOfTeamStrings”添加到 NSArray,而不是使用我自己的类,而不是我上面的实现?

或者,我应该创建自己的 NSArray 子类并在其中添加类方法吗?

在任何一种情况下,我都需要自己将课程设为单例吗?还是没有必要?

【问题讨论】:

  • 似乎你想多了,如果你一直担心它,你可能会出现压力发作。你所拥有的似乎很好,如果你真的担心其他东西会在某个时候改变你已经不可变的数组设置的属性设置器类型方法。

标签: ios objective-c cocoa nsarray class-method


【解决方案1】:

一般来说,通过类别将类方法添加到基础类有很好的用途。但在这种情况下,我实际上会坚持 arrayOfTeamNamesMyConstants 的一部分。团队名称是 NSArray 这一事实并不像它对于您的应用程序而言是一个常量这一事实重要。

如果MyConstants 中定义的值非常多样化且不相关,或者只有几个,那么我会考虑将MyConstants 作为一个类删除并使用类别甚至只是外部,例如extern NSArray * const BPAllTeamNames.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多