2010-05-07 46 views
3

我对Objective-C相当陌生,对于可能导致Apple拒绝我的应用程序的“私有API”的未知之处感到困惑。这是否包括将方法添加到现有类?例如,我在stackoverflow上找到了一些代码,将UITabBars的标签栏图标重新着色为UITabBarItem类的扩展。这是否被认为是“私人API”?如果不是,那是什么?什么构成iPhone应用程序中的私有API?

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

伟大的问题。 – 2010-05-07 20:13:59

回答

2

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

一般来说,私人方法往往会在它们前面有下划线。您也不希望使用Apple保留用于大型UI对象的私有类,例如UIWebView中的私有组件。你不想使用这些或你的应用程序将被拒绝。

您在项目中的框架中的头文件中看到的任何内容都是“公开”且可用的。无论如何,如果你真的想知道关于课程的所有内容,那么通过标题来翻阅是个好主意。

4

不,用户代码添加的类别不是“私人”。私有API是Apple的内部API,它们没有记录。如果方法不在头文件中并且不在开发者文档中,方法是私有的。 (作为一个经验法则,如果你没有得到任何编译器警告,你没有使用私有API。)

相关问题