0

Python Objective c ブリッジを使用して見つけたものはすべて読んでいます。私のメイン アプリは Objective C です。この段階では、Python で関数を呼び出せるようにしたいだけです。私が間違っている根本的な何かがあると思いますが、それを見ることができません。ところで、XCode 4 を使用し、Python.framework にリンクして、Lion を実行しています。

バンドル内に、次のような 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 メイン]

4

0 に答える 0