相关疑难解决方法(0)

Apple如何知道您正在使用私有API?

我向Apple提交了一个没有任何源代码的二进制文件.

除了手动检查源代码外,Apple如何知道使用了什么以及您调用了哪些API?

iphone objective-c appstore-approval

109
推荐指数
4
解决办法
4万
查看次数

如何检测和避免在第三方库中使用私有API

既然Apple正在运行某种静态分析来自动检查私有API的使用,那么很多人都因为Three20库而被捕.我使用另一个第三方库(我自己从代码中编译),我想在提交给Apple之前自动审核它以供私有API使用,所以我可以删除/重写这些部分.

如果我运行nm我的应用程序可执行文件,我会得到一个符号列表,我看到那些我不使用的符号.例如,我看到_AudioServicesPlaySystemSound,如果我在XCode中搜索"AudioServicesPlaySystemSound",我得不到任何结果.有没有办法自动区分对私有API的调用,例如我注意到Apple习惯用初始下划线命名它们.

但是:如果我故意包含对私有API的调用,它不会显示在输出中nm,但如果我strings在二进制文件上运行它会显示.基于此,我的一个想法是将所有私有API调用的大量列表编译成一个巨大的表,并在字符串输出中自动搜索它们.我还没有这样做.

有没有人有关于如何自动捕捉这些东西的任何提示,所以我只进行一次审查过程?

iphone iphone-privateapi

10
推荐指数
1
解决办法
5803
查看次数

从CIImage创建UIImage

我正在使用一些CoreImage过滤器来处理图像.将滤镜应用于输入图像会生成名为filterOutputImage的输出图像,类型为CIImage.

我现在希望显示该图像,并尝试:

self.modifiedPhoto = [UIImage imageWithCIImage:filterOutputImage];
self.photoImageView.image = self.modifiedPhoto;
Run Code Online (Sandbox Code Playgroud)

但是视图是空白的 - 没有显示任何内容.

如果我添加了打印出有关filterOutputImage和self.modifiedPhoto的详细信息的日志语句,那些日志语句会向我显示这些变量似乎都包含合法的图像数据:它们的大小正在报告且对象不是nil.

所以在做了一些谷歌搜索之后,我找到了一个需要通过CGImage阶段的解决方案; 可见:

CGImageRef outputImageRef = [context createCGImage:filterOutputImage fromRect:[filterOutputImage extent]];
self.modifiedPhoto = [UIImage imageWithCGImage:outputImageRef scale:self.originalPhoto.scale orientation:self.originalPhoto.imageOrientation];
self.photoImageView.image = self.modifiedPhoto;
CGImageRelease(outputImageRef);
Run Code Online (Sandbox Code Playgroud)

第二种方法有效:我在视图中显示正确的图像.

有人可以向我解释为什么我的第一次尝试失败了吗?我使用imageWithCIImage方法做错了什么导致图像看起来存在但无法显示?是否总是需要"通过"CGImage阶段才能从CIImage生成UIImage?

希望有人能解决我的困惑:)

H.

core-image uiimage ios5

10
推荐指数
2
解决办法
8352
查看次数