【问题标题】:Implementing PyObjc NsObject Subclass实现 PyObjc NsObject 子类
【发布时间】:2011-05-01 12:16:31
【问题描述】:

我有一个 Objc-C 项目,我希望能够在其中通过 Python 处理一些数据。为此,我决定实现一个 PyObjc NSObject 子类,然后我将通过接口生成器链接到我的 Obj-C 类。

我将 Python 框架添加到我的项目中,并添加了一个包含以下简单代码的 python 文件:

import objc
from Foundation import *
from AppKit import *

class PythonWrapper(NSObject):
    def applicationDidFinishLaunching_(self, sender):
        NSLog("Application did finish launching.")

我在我的 XIB 中创建了一个 PythonWrapper 实例(构建器自动识别了它的名称)。但是,在构建时,即使没有将其链接到其他类,我也会遇到以下问题:

忽略文件 /Developer/SDKs/MacOSX10.6.sdk/Library/Frameworks//Python.framework/Python,文件中缺少所需的架构 x86_64

此外,xCode 日志还显示:

未知类“PythonWrapper”,改用“NSObject”。在路径 /Users/joao/Library/Developer/Xcode/DerivedData/Jalioneiro-ekjwzbkqqgpyekadkyebhgdsjcxo/Build/Products/Debug/Jalioneiro.app/Contents/Resources/en.lproj/Interface.nib 的 Interface Builder 文件中遇到。

我在这里缺少什么?有没有其他方法可以将 python 代码链接到我的 Obj-C 类?

注意:我正在研究 xCode4

【问题讨论】:

    标签: python cocoa xcode pyobjc


    【解决方案1】:

    我听说 Xcode 4 不能很好地与 PyObjC 配合使用,但我仍在使用 3,所以我不能确定。

    第二个错误的原因(这也困扰着我一直)是您需要将自定义类导入项目的 main.py:

    #import modules required by application
    import objc
    import Foundation
    import AppKit
    
    from PyObjCTools import AppHelper
    
    # import modules containing classes required to start application and load MainMenu.nib
    import MyAppDelegate
    import MyCustomView
    import MyArrayController
    
    # pass control to AppKit
    AppHelper.runEventLoop()
    

    第一个错误看起来像是您正在尝试构建一个仅限 64 位的应用程序。 Snow Leopard 附带的 PyObjC 仅编译为 32 位(实际上,我认为默认的 Python 也是如此)。尝试将 Target 的构建架构切换为 32 位或 32/64 位通用。您也可以重新编译 PyObjC 并将其包含在您的应用程序包中——我自己还没有尝试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多