Mac应用程序最近因使用非公共API而被拒绝(见下文),我不确定如何解决问题 - 主要是因为我不完全了解问题本身。 / p>
我尝试过使用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',框架: '/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',框架: '/usr/lib/libauto.dylib' 'auto_zone_dump',框架: '/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', 框架:'/ 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', 框架:'/ usr / lib / libauto.dylib' 'auto_zone_unregister_thread', 框架:'/ usr / lib / libauto.dylib' 'auto_zone_write_barrier_memmove', 框架:'/ usr / lib / libauto.dylib'
如果您已经定义了方法 源代码与。的名称相同 我们建议,上述API 改变你的方法名称,以便 他们不再与苹果公司发生冲突 私有API,以避免您的应用程序 在未来的提交中被标记。
另外,一个或多个 上述API可能存在于 图书馆附带你的 应用。如果您没有访问权限 到图书馆的来源,你可能是 能够搜索已编译的二进制文件 使用“strings”或“otool”命令 线工具。 “字符串”工具可以 输出一个方法列表 库调用和“otool -ov”会 输出Objective-C类 结构及其定义的方法。 这些技巧可以帮助您缩小范围 在哪里有问题的代码 驻留。
答案 0 :(得分:1)
PyObjC框架正在导入(直接或通过另一个正在使用的库)这些库“/usr/lib/libSystem.B.dylib”和“/usr/lib/libauto.dylib”,如消息中所述。这两个库包含某些方法(也在消息中提到)
与Apple的私有API冲突
我猜这些方法会与QTKit框架发生冲突(参见API notes for QTKit)。现在有两种可能性: