AppStore rejected: use of private calls refers to my own methods

I received the following rejection message:

Your app uses or references the following non-public APIs:

  • removeItems:,
  • setSelectedSection:
  • setIsNew:
  • selectedSection

The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.

Looking through the code, I find

removeItems:
in a piece of code implemented by Xcode Core Data code generator (I have a substructure called items).

selectedSection
and
isNew
are property in generated core data code.

The code passed last deployment. And the code passed beta review two or three weeks ago.

Does Apple forbid to use these function names in MY private code? Or is there currently an AppStore issue with false positives?

UPDATE: I received the following answer from Apple App Review team:

Thank you for your response. For each of the selectors at issue, we found the following occurrences:


... 4 method uses deleted ...


To clarify, these are not necessarily direct uses of non-public APIs, but as your app does not have these statically defined, they are name collisions with possible private selectors, and as such revision is appropriate.

The last section is especially interesting: Does this mean, that I cannot any longer choose the names of any methods free of fear that Apple might come up with the same method name? Or, to reduce it to a objc question: what is "statically defined"?

static
C-methods? class-methods?


UPDATE: This question is also posted on SO here: http://stackoverflow.com/questions/39504260/appstore-rejected-use-of-private-calls-refers-to-my-own-methods

> Does this mean, that I cannot any longer choose the names of any methods free of fear that Apple might come up with the same method name?


It means that if you may not use a name that happens to match a name that Apple uses for a non-public API. If you do, on submission you will be warned by Apple and will need to change the name.

Hi,


thanks for the information, that is awkward.


Is there a way to test for private calls without going through full review? Will beta review allow this? Will Xcode report this (for me, it did not).


Best regards,


Thomas

I think only final review will pick it up.

You can start each name with someting personal like thstMethodXYZ - I suspect that's unique

As noted not via Xcode - only during submittal.


Try one of the 3rd party project checkers, such as h t t p : / / fauxpasapp.com

Hi,


prefixes and suffixes may help, but, hey, we are past 2015, we have objects, we have finally understood functional language paradigm: I will not start prefixing functions like in the 80's of the last century on a device that marks several milestones in UX and computer usage in general ....


I think Apple should come up with a solution here that is as sound as their product.


Best regards,


Thomas

AppStore rejected: use of private calls refers to my own methods
 
 
Q