【问题标题】:Accessing Private iOS Apis, How to? [closed]访问私有 iOS API,如何? [关闭]
【发布时间】:2012-10-20 08:53:21
【问题描述】:

我想从 iOS SDK 访问一些与相机相关的私有 API,例如:

- (void)setExposureMode:(int)arg1;
- (int)exposureMode;

等等。这只是为了我的个人发展,我不打算向商店提交任何应用程序。但我似乎无法弄清楚如何访问和使用这些 API。是否有任何教程或书籍解释该过程?

例如,我尝试将此行添加到我的 .h 文件中:

@interface AVCaptureDevice (Private)

- (void)setExposureMode:(int)arg1;

@end

但是当我从我的应用程序调用此 API 时,它会崩溃。即使 respondsToSelector 返回 TRUE。

那么任何人都可以将我链接到一些好的资源以了解私有 API 编程吗?

【问题讨论】:

    标签: iphone objective-c ios api iphone-privateapi


    【解决方案1】:

    您所做的在语法上几乎是正确的。

    唯一的问题是,在您的类别声明中,您使用的是int 而不是float。您可以尝试更改此设置,看看情况是否有所改善,但我怀疑问题出在其他地方。

    对于私有 API,没有关于应该如何使用其方法的描述。所以,也许你在错误的时间或错误的上下文中调用了一个方法。检查崩溃日志可能会提供一些见解。

    还有一件事,看看你的崩溃:它崩溃的事实可能是因为你设置的 exposureMode 不受支持。尝试使用(ref):

    - (BOOL)isExposureModeSupported:(AVCaptureExposureMode)exposureMode
    

    事先检查(如果您还没有这样做)。

    【讨论】:

    • 对不起,我复制了错误的 API,我实际上使用的是 setExposureMode 而不是 setExposureGain。所以我认为 int/float 没有问题。我会尝试检查日志..
    • 我检查了日志,这是我得到的:0 CoreFoundation 0x37d1b29e __exceptionPreprocess + 158 1 libobjc.A.dylib 0x3581b97a objc_exception_throw + 26 2 AVFoundation 0x39cbd9ec -[AVCaptureFigVideoDevice setExposureMode:] + 548 知道这意味着什么?
    • 据我所知,setExposureMode 被调用;然后setExposureMode 抛出异常。我们不能从日志中知道为什么:可能是一个错误的论点;也许以前的一些电话应该可以解决问题,等等......
    • 好的,这是一些运行时问题,但我访问私有 API 的语法本身是正确的,不是异常的根本原因?
    • 这是我从崩溃日志中读到的内容...AVCaptureFigVideoDevice 在调用时可能未正确设置,但调用已执行...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多