实现PyObjc NsObject子类

时间:2011-05-01 12:16:32

标签: python cocoa xcode pyobjc

我有一个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。

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

注意:我正在研究xCode4

1 个答案:

答案 0 :(得分:0)

我听说过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位Universal。您也可以沿着重新编译PyObjC并将其包含在应用程序包中的路径 - 我自己没有尝试过。