Okay, we think we have found a workaround to Apple’s false alarm. We are making this available in daily build 2422. You may still see warnings about non-public APIs, but you should no longer see errors preventing your app from uploading.
What we are doing:
Pro/Enterprise users: you can use this daily build. We appreciate any reports on this. Expect to continue to see warnings, but the error should (hopefully) go away.
Starter/Basic users: Because Apple is making so many things in flux, we are going to wait for the dust to settle post-iOS 8 before we update the public release. Too many variables can change right now, and it doesn’t make sense for us to play a cat-and-mouse game with Apple — there may be other public APIs that Apple will capriciously choose to cause submission errors. Hopefully, given that native iOS devs are affected, Apple will fix this on their servers.
What you can do if you really must submit:
Right off, we recommend that you avoid submitting right now. Experience (https://devforums.apple.com/message/1035262#1035262) suggests you should postpone submissions until 2 weeks after iOS 8.
However, if you really must submit right now, you should submit your grievances to Apple. To that end, we have created a form letter (below) that you can send to (appreview@apple.com).
You will need to replace NINE_DIGIT_ID with the corresponding nine digit identifier from iTunes Connect.
SUBJECT: False positives in “non-public API usage” preventing app upload
MESSAGE BODY:
Hi, our app binary (NINE_DIGIT_ID) cannot be uploaded to iTunesConnect b/c ApplicationLoader is *incorrectly* flagging non-public APIs. In other words, these are false positives.
We say this with 100% certainty because the code is using public properties that the Xcode compiler (Apple’s own tools) are converting to ‘set’ selector calls (as Obj-C properties are syntactic sugar for selector method calls). These calls are erroneously being flagged as false positives:
* ‘setComposeViewDelegate:’ is equivalent to the ‘composeViewDelegate’ property in GKFriendRequestComposeViewController
* ‘setAchievementDelegate:’ is equivalent to the ‘achievementDelegate’ property in GKAchievementViewController
* ‘setLeaderboardDelegate:’ is equivalent to the ‘leaderboardDelegate’ property in GKLeaderboardViewController
* ‘setShowExistingMatches:’ is equivalent to the ‘showExistingMatches’ property in GKTurnBasedMatchmakerViewController
* ‘setTurnBasedMatchmakerDelegate:’ is equivalent to the ‘turnBasedMatchmakerDelegate’ property in GKTurnBasedMatchmakerViewController
Similar issues have been noted on the Apple’s Developer Forum, e.g. https://devforums.apple.com/message/1035114#1035114
Therefore, our app does *not* contain private APIs, and is consistent with public API usage per Apple’s developer agreement. Please let us know how we can upload our binary and get past these false alarms.
sincerely,
XXX