实现PyObjc NsObject子类
我有一个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 个回答
我听说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也是这样)。你可以试着把目标的构建架构改成32位或者32/64位通用版。你也可以尝试重新编译PyObjC并把它包含在你应用的包里——不过我自己还没试过。