对于IOS开发,NS_ROOT_CLASS是否“安全”?

时间:2013-12-12 15:19:20

标签: ios objective-c memory-management

我的情况是,我有一个纯静态的无状态外观,用于提供对一组服务的访问。我正在考虑使用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时还应该进行其他技术考虑?

2 个答案:

答案 0 :(得分:3)

是的,你可以这样做。

但不要。

定义一个新的根类 - 甚至是一个只包含类方法的新根类 - 是一种非常典型的模式。即几乎没有做过。从来没有做到调试器和/或其他开发工具可能会稍微奇怪地对待它。

只需声明它是NSObject的子类。或者创建一个单例并使它们成为实例方法,因为,几乎可以肯定,您最终会希望将状态存储为实用程序的一部分,并且您必须在那时进行重构。

注意:方法应以小写字母开头。

答案 1 :(得分:1)

一切都好。您可以创建自己的根类。如果您不需要创建UtilityThing的实例,那么它看起来是正确的。