2016-09-15 24 views
2

我收到了以下拒絕消息:AppStore的拒絕:使用私人電話指的是我自己的方法

你的應用程序使用或參考以下非公開的API:

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

App Store上不允許使用非公共API,因爲如果這些API發生更改, 可能會導致糟糕的用戶體驗。通過代碼

看,我在由Xcode中核心數據的代碼生成器實現的一段代碼,找到removeItems:(我有一個子稱爲項目)。

selectedSectionisNew是生成的核心數據代碼中的屬性。

代碼通過上次部署。代碼在兩週或三週前通過了beta審覈。

Apple是否禁止在我的私人代碼中使用這些函數名?或者,目前是否存在誤報的AppStore問題?

更新:我收到了以下的答案必須從蘋果應用審查團隊:

謝謝您的答覆。對於每一個在問題的選擇,我們發現 以下事件:

... 4方法使用刪除...

爲了澄清,這些都是非公開的API, 但不一定是直接的用途由於您的應用沒有這些靜態定義,因此它們與名稱 可能的私有選擇器發生衝突,因此此版本適用於 。

最後一節特別有趣:這是否意味着,我不能再選擇任何方法的名稱,而不用擔心Apple可能會使用相同的方法名稱?或者,將其減少爲objc問題:什麼是「靜態定義」? static C方法?類的方法?

+0

好吧,從你的選擇器的名字,不難想象在表/集合vie相關的代碼中會出現相同的代碼;)也許你可以嘗試重新上傳你的版本並向Apple解釋這個,你在這裏做的相同方式?無論如何,有時它會有所幫助,那真是一個非常有趣的案例! – Losiowaty

+1

當然,我向Resolution Center寫了同樣的內容,但是看看我是否陷入這個共同的陷阱或真的需要挖掘我的代碼並將所有調用加上應用程序或公司代碼前綴總是有用的。 – thst

+0

不幸的是,我不得不繼續使用該應用程序,並且不能再等待一兩天,以獲得Apple的另一個響應。如果任何人有興趣,我也將這個消息推送到開發人員論壇,在這裏:https://forums.developer.apple.com/thread/63257 – thst

回答

0

拒絕的原因其實就是我使用的是Apple決定引入的選擇器作爲私有選擇器。

這可能發生在任何時間,任何版本,沒有測試設施,但應用程序審查(在寫這篇文章的時候)。

看來蘋果公司在這裏改變了政策,早些時候,他們只是發出警告,現在應用程序被拒絕。

該解決方案實際上很簡單,但可能需要付出重大努力。

  • 重命名的審查報告中列出
  • 重命名的屬性,從核心數據也是動態的屬性選擇器,匹配報告。就我而言,所有報告的字段都是核心數據屬性。這需要重命名數據庫字段,因此我必須添加新的數據庫模式版本並相應地重命名字段,並啓用自動遷移來初始化數據庫堆棧。