0

我一直在阅读使用 Python Objective c 桥可以找到的所有内容。我的主要应用程序在 Objective C 中。在这个阶段,我只想能够在 Python 中调用函数。我认为我做错了一些基本的事情,但就是看不到。顺便说一句,我正在运行 Lion,使用 XCode 4 并链接到 Python.framework。

在包中,我建立了一个名为 PythonStuff.py 的文件,如下所示...

import objc
from Foundation import *
NSObject = objc.lookUpClass('NSObject')

class PythonStuff(NSObject):
    def init(self):
        self = super(PythonStuff, self).init()
        return self

    def pySetAString_(self, aString):
        #self._whatisit(aNumber)
        try:
            self.MyString = aString
        except:
            self.MyString = "blah" 
        return

然后我设置了以下协议

#import <Foundation/Foundation.h>
@class PythonStuff;

@interface NSObject (PythonMethods)

-(void) pySetAString:(NSString *) value;

@end

最后,要调用它,我运行以下代码

if( ! Py_IsInitialized() )
        Py_Initialize();
PyThreadState *tstate = Py_NewInterpreter();
Class PythonStuffClass = NSClassFromString(@"PythonStuff");
id myPythonStuff;

myPythonStuff = [[PythonStuffClass alloc] init];
[myPythonStuff pySetAString:@"some silly string"];

从我看到的一些样本中,我认为它会起作用,但我就是不明白为什么它不起作用。我可以设置没有任何函数的简单 Python 类,它们似乎可以工作,至少它们不会出错,但是当我尝试调用函数时,调用中止,对我来说,这看起来像是某种库在 Objective-C 或作为 Python 导入中丢失。

我已经为 Objective-C 加入了一个异常处理程序。这是它显示的内容:-

0 objc_exception_throw 4 ffi_closure_SYSV 5 -[EditorViewItem runThread:] 6 [NSThread main]

4

0 回答 0