My first Lazarus application (a port of my Windows Delphi game) just got rejected by the Apple App Store review process for use of a non-public API call, namely _NSGetCarbonMenu
Naturally I'm not using this in my code so it's used in Lazarus's Carbon based code I guess. The app was built with lazarus 0.9.29 and fpc 2.5.1. I've since updated to the new 0.9.30 and 2.4.2 today but the app they reviewed was submitted about two weeks ago.
Here is what they said:
2.5 Apps that use non-public APIs will be rejected
Mar 28, 2011 06:34 PM. From Apple.
2.5
The use of non-public APIs can lead to a poor user experience should these APIs change in the future, and is therefore not permitted. The app includes '_NSGetCarbonMenu' from the framework .
If you have defined a method in your source code with the same name as this API, we suggest altering your method name so that it no longer collides with Apple's private API to avoid your application being flagged in future submissions.
Alternatively, this API may reside in a library included with your application. If you do not have access to the library's source, you may be able to search the compiled binary using “strings" or “otool" command line tools. The “strings" tool can output a list of the methods that the library calls and “otool -ov" will output the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides.
Anybody got any thoughts on this?