【问题标题】:Calling custom Objective-C from a pyobjc application?从 pyobjc 应用程序调用自定义 Objective-C?
【发布时间】:2010-07-05 15:14:46
【问题描述】:

这个问题基本上是另一个问题的反面:Calling Python from Objective-C

我已经在 Objective-C 中实现了我的 iPhone 应用程序逻辑(显然),现在我正在尝试在服务器组件中尽可能多地重用我的 XCode 项目以节省双​​重实现。我已经成功地从 Python 加载了 CoreData 数据模型,但是看不到从 Python 实际调用 Objective-C 逻辑的方法。

基本上,我正在尝试从 Python 访问我 iPhone 项目中的 Objective-C 类和方法,以免自己重复所有实现。

这甚至是模糊的可能,还是重复实现是这里唯一的解决方案?看起来像是 Boost::Python 可能用于的那种东西,但我不太确定。

编辑:Boost::Python 不起作用,因为它是基于 C++ 的,我需要 Objective-C。我知道那行不通是有原因的。

【问题讨论】:

    标签: iphone python objective-c pyobjc


    【解决方案1】:

    如果您的 Objective-C 代码在一个框架中,并且您想编写一个使用您的框架的 Python 应用程序,那么您可以使用 objc.loadBundle,然后使用 objc.lookUpClass 或 NSClassFromString 访问你的课。从那里,您可以像使用任何其他桥接的 Objective-C 类一样使用您的类。

    如果您在已经启动了 Objective-C 运行时的进程中运行 Python 代码,并且您的类已经在其中注册,那么您可以跳过 loadBundle 步骤。

    【讨论】:

    • 感谢约瑟夫的回复。我想我必须手动加载包,因为 iPhone 项目与 pyobjc 服务器完全分开,除了我手动复制的 .momd 数据模型定义。很抱歉这个菜鸟问题,但是我在哪里可以找到 XCode 为 iPhone 项目构建的包?我查看了 my_project/build ,那里有一些看起来像是为 iOS 而不是 OSX 编译的东西,所以不确定如果我尝试将它加载到服务器上是否会起作用(显然,它在 OSX 上运行)。
    • 您将需要创建一个新的构建目标,该目标使用将在 Mac 上编译的代码构建 Mac OS X 包或框架。如果你需要这方面的帮助,你应该问另一个问题,因为它比其他任何东西都更具体 Xcode。
    • 感谢您的帮助 Joseph,我将在新问题中讨论 XCode 问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2018-05-15
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多