在Objective-C中访问隐藏的私有类

时间:2014-05-06 18:45:17

标签: ios objective-c cocoa uinavigationbar uinavigationitem

如何通过以下方式访问隐藏的属性:

__attribute__((visibility("hidden")))

我试图访问UINavigationItemButtonView,但似乎有时最近(iOS 7.1?)他们已将上述内容添加到头文件中。递归打印窗口不再在视图堆栈中显示UINavigationItemButtonView

那么,给定一个UINavigationBar,如何访问通过上述标志隐藏的UINavigationItemButtonView

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

2 个答案:

答案 0 :(得分:2)

attribute关键字只是编译器的消息,与运行时无关。使用((visibility(“xxx”))仅用于告诉编译器给定的声明是否应该被其他包中的客户端“可见”或可用.visibility(“hidden”)只是意味着,尽管公开声明,make这个东西对外部包是不可见的,所以它们将无法使用它。如果你试图使用这个类或方法,编译就会失败。

如果您没有在递归描述中看到此类,则很可能不再使用此类;它当然不是因为属性声明。

答案 1 :(得分:1)

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