2014-05-06 38 views
0

我如何可以访问的VIA被隐藏的属性:(?的iOS 7.1)访问隐藏私有类在Objective-C

__attribute__((visibility("hidden"))) 

我试图访问UINavigationItemButtonView,但似乎近期某个时候他们已经将以上内容添加到头文件中。递归打印窗口不再在视图堆栈中显示UINavigationItemButtonView

因此,给定UINavigationBar,如何访问已通过上述标志隐藏的UINavigationItemButtonView

打印UINavigationBar中的所有子视图不会显示它。

回答

2

属性关键字只是一个消息给编译器,并且与运行时无关。使用((visibility(“xxx”))仅用于告诉编译器给定的声明应该是“可见的”还是客户可以在其他包中使用。visibility(“hidden”)意味着尽管公开声明,如果你尝试使用这个类或方法,编译将失败

如果你没有看到这个类在递归描述中被使用,那么这个类是不可见的,很可能这个类不再被使用;它当然不是因为属性声明

1

由于这是一个私人课程,你不应该。您做任何绕过该限制的行为都可能导致您的应用程序无法通过审核流程。更不用说,一般来说,访问私有和/或隐藏的API,类,实例变量,属性或其他任何东西,是确保您的应用程序在(不太遥远)未来的中断的真正好方法。

+0

在这种情况下,假设子视图的递归转储不再显示它,那么很可能该类不再显示在使用中。为什么首先使用它的例子是一个错误。 –