2011-05-24 76 views
2

Mac應用程序最近被Mac App Store拒絕使用非公開API(見下文),我不確定如何解決問題 - 主要是因爲我不完全瞭解問題本身。Mac App被拒絕使用非公開API

我試過用otool -L和nm -u來獲得這個問題的一個更好的主意,但是我在終端中得到了一個「無法映射文件」的警告。

同樣重要的是要注意我在應用程序中使用PyObjC,我有一個感覺是這個問題的根源。

有人知道如何解決這個問題嗎?

2.5

使用非公開的API可導致 糟糕的用戶體驗應該將這些 的API在將來改變,並且是 因此不允許的。下面 非公開API包括在您的應用程序 :

'pthread_key_init_np',框架: '/usr/lib/libSystem.B.dylib' 'auto_assign_weak_reference', 框架:「/ usr/lib目錄/libauto.dylib ' 'auto_collect',框架: '/usr/lib/libauto.dylib' 'auto_collect_multithreaded', 框架: '/usr/lib/libauto.dylib' 'auto_collection_parameters', 框架:' /usr/lib/libauto.dylib' 'auto_read_weak_reference',framework: '/usr/lib/libauto.dylib' 'auto_zone_add_root',框架: '/usr/lib/libauto.dylib' 'auto_zone_allocate_object', 框架: '/usr/lib/libauto.dylib' 'auto_zone_assert_thread_registered', 框架:「/ usr/lib中/ libauto.dylib ' 'auto_zone_atomicCompareAndSwap', 框架: '/usr/lib/libauto.dylib' 'auto_zone_atomicCompareAndSwapPtr', 框架: '/usr/lib/libauto.dylib' 'auto_zone_clear_stack',框架: '/ usr/lib/libauto.dylib' 'auto_zone_create',framework: '/usr/lib/libauto.dylib' 'auto_zone_dump',framework: '/usr/lib/libauto.dylib ' 'auto_zone_erase_associative_refs', 框架: '/usr/lib/libauto.dylib' 'auto_zone_get_associative_ref', 框架: '/usr/lib/libauto.dylib' 'auto_zone_get_layout_type', 框架:'/ usr/lib中/libauto.dylib ' 'auto_zone_is_collecting',框架: '/usr/lib/libauto.dylib' 'auto_zone_is_finalized',框架: '/usr/lib/libauto.dylib' 'auto_zone_is_valid_pointer', 框架:' /usr/lib/libauto.dylib' 'auto_zone_register_datasegment', framework:'/usr/lib/libauto.dylib' 'auto_zone_register_thread', 框架: '/usr/lib/libauto.dylib' 'auto_zone_release',框架: '/usr/lib/libauto.dylib' 'auto_zone_retain',框架: '/usr/lib/libauto.dylib' 'auto_zone_retain_count',框架: '/ usr/lib/libauto。dylib ' 'auto_zone_root_write_barrier', 框架: '/usr/lib/libauto.dylib' 'auto_zone_set_associative_ref', 框架: '/usr/lib/libauto.dylib' 'auto_zone_set_class_list',框架: ' 的/ usr/LIB/libauto.dylib」 'auto_zone_set_write_barrier', 框架: '/usr/lib/libauto.dylib' 'auto_zone_size',框架: '/usr/lib/libauto.dylib' 'auto_zone_start_monitor',框架: '/usr/lib/libauto.dylib' 'auto_zone_unregister_datasegment', framework:'/usr/lib/libauto.dylib' 'auto_zone_unregister_thread', 框架:「/usr/lib/libauto.dylib」 「auto_zone_write_barrier_memmove」, 框架:「/usr/lib/libauto.dylib」

如果你已經在你的 源代碼中定義的方法具有相同的名稱 上面提到的API,我們建議 更改您的方法名稱,以便 不再與Apple的 私有API衝突,以避免您的應用 在將來的提交中被標記。

此外,上述API中的一個或多個可能位於 應用程序附帶的 庫中。如果您沒有訪問庫的來源 ,您可能是 能夠使用「字符串」或「otool」命令 行工具搜索編譯的二進制文件 。 「字符串」工具可以輸出 庫調用的方法列表,「otool -ov」將輸出Objective-C類 結構及其定義的方法。 這些技術可以幫助您縮小有問題的代碼 所在的位置。如在該消息中提到的

+4

你最好在Apple開發者論壇中詢問,假設您有付費開發者帳戶 – 2011-05-24 18:23:40

回答

0

PyObjC框架所導入的(直接或通過正在使用另一個庫)這些庫「/usr/lib/libSystem.B.dylib」和「/usr/lib/libauto.dylib」 。這兩個庫包含某些方法(該消息中還提到)是

碰撞與蘋果的私有API的

我想這些方法與QTKit框架(參見API notes for QTKit)碰撞。現在有兩種可能性:

  1. ,如果你能在構建時刪除有問題的庫
  2. Talk與從PyObjC的球員,看看他們是否需要改變他們的API
相關問題