我遇到的情况是,我有一个纯静态的无状态外观,用于提供对服务集合的访问。我正在考虑使用NS_ROOT_CLASS作为提供基类的替代方法,因为Facade没有内存管理需求。考虑:
NS_ROOT_CLASS
@interface UtilityThing
+ (void) Service1;
+ (void) Service2;
@end
Service1和Service2有效地表示服务类的“类似单例”的实例。因此,调用代码如下所示:
[[UtilityThing Service1] Thing Service1Does];
除了它没有实例数据这一事实之外,我选择NS_ROOT_CLASS来部分简化该类的用法,以便唯一的代码完成建议就是相关的建议(re:XCode 5: Is there any way to group/filter/sort what shows up in code-completion?)。
有谁知道这种模式是否有任何陷阱,可能会阻止应用程序通过认证?还是在使用NS_ROOT_CLASS时还有其他技术方面的考虑?
最佳答案
是的,你可以这么做。
但是不要。
定义一个新的根类-甚至是一个仅包含类方法的新根类-都是非常典型的模式。即几乎从来没有做过。从来没有做过这样的事情,即调试器和/或其他开发工具可能会对它有些奇怪。
只需声明它是NSObject
的子类即可。或创建单例并使其成为实例方法,因为几乎可以肯定,您最终想要将状态存储为实用程序的一部分,并且此时必须进行重构。
注意:方法应以小写字母开头。