什么构成iPhone应用程序中的私有API?

时间:2010-05-07 20:07:16

标签: ios objective-c app-store

我对Objective-C相当新,并且对于可能导致Apple拒绝我的应用程序的“私有API”的unbrella感到困惑。这是否包括向现有类添加方法?例如,我在stackoverflow上找到了一些代码,用于重新着色UITabBars的标签栏图标,并将此扩展名添加到UITabBarItem类。这被认为是“私有API”吗?如果没有,那会是什么?

@interface UITabBar (ColorExtensions)
- (void)recolorItemsWithImage:(UIImage *)image shadowColor:(UIColor *)shadowColor shadowOffset:(CGSize)shadowOffset shadowBlur:(CGFloat)shadowBlur;
@end

2 个答案:

答案 0 :(得分:4)

不,用户代码添加的类别不是“私有”。私有API是Apple的内部API,没有文档。如果方法不在头文件中且不在开发人员文档中,则这些方法是私有的。 (根据经验,如果您没有收到任何编译器警告,则表示您没有使用私有API。)

答案 1 :(得分:2)

以上可能是Objective-C category,它使用新方法扩展UITabBar类。这完全是犹太洁食。您甚至可以使用类别覆盖现有方法,但不建议这样做。

一般来说,私有方法通常会在它们前面加上下划线。您也不希望使用Apple为大型UI对象保留的私有类,例如UIWebView中的私有组件。您不想使用这些,否则您的应用会被拒绝。

您在项目框架中的头文件中看到的任何内容都是“公共”且可用的。无论如何,如果你真的想知道关于班级的一切,那么最好翻阅标题。