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