我找到了课程PSCellularDataSettingsDetail
及其方法+(void)setEnabled:(BOOL)enabled;
,我认为这会为我提供所需内容,即访问移动数据设置。
我通过使用Preferences.framework
打开已编译的class-dump-z
来找到此方法。
现在我找到this answer并尝试以这种方式访问类和方法,但该类也是私有的。如何将此课程打开到Xcode? p>
答案 0 :(得分:5)
您是否尝试过调用performSelector?这通常是调用私有方法的技巧。记住所有使Objective-C中的方法变为私有的事实是它不会在h文件中公布。但是,如果您向对象发送消息并且该对象可以响应该消息,则无论头文件中的内容是什么。
答案 1 :(得分:3)
如果它是像+(void)setEnabled
这样的类方法,你只需要调用[MyClass performSelector(@selector(myMethod)]
,如果是实例方法,你可以在作为类实例的变量上调用它:
MyClass * c = [[MyClass alloc] init];
[c performSelector: @selector(myMethod)]
当你需要传递参数时会很棘手,就像在这种情况下一样,因为performSelector传递参数的唯一方法就是它们是对象而不是基元。您还可以查看使用objc_msgSend。
网上有很多东西可以解释这两者是如何运作的。无论哪种方式,尝试调用私有方法都很麻烦,风险很大。