我最近开始用 objc 编程,我在想如何在现有的 objc 应用程序中使用 python 代码。我在这个站点和其他一些线程中找到了一些线程,但它们根本没有帮助我。我想要做的是获取在苹果开发者网站上找到的 SpotlightAPI并使用结果用 python 代码处理它们。到目前为止,我已经完成了以下工作:
1. 从苹果下载了 SpotlightAPI
2. 基于 PyObjc 中的 cocoa-python 应用程序模板创建了一个新项目
3. 将 SpotlightAPI 中的控制器文件添加到 PyObjC
4. 配置了绑定与他们在 SpotlightAPI 中的方式相同
5. 执行程序并成功运行
6. 创建了一个继承自 NSObject 的新 python 类文件(称为 python.py)
7. python 文件有以下代码:
from Foundation import *
import objc
NSObject = objc.lookUpClass(u"NSObject")
print "PYTHON VERSION BEING USED:"
class Python(NSObject):
def sendit_(self, something):
print something
return "asdf"
8.我在Controller.m文件的开头插入了这段代码:
@class Python;
@interface NSObject (MethodsThatReallyDoExist)
-(NSString *) sendit: (id) aString;
@end
@implementation Controller
- (id)init
{
self = [super init];
Class pythonClass = NSClassFromString(@"Python");
myPython = [pythonClass new];
NSLog(@"Created PythonClass: %@", myPython);
NSString * oneString = [myPython sendit:@"asdf"];
NSLog(@"%@", oneString);
return self;
}
9.id *myPython;
在Controller.h文件中添加变量声明
10.在controller.m文件中实现sendit方法如下:
- (NSString *) sendit:(id) aString
{
return [myPython sendit:aString];
}
它编译并成功运行,但我从 init 函数得到的控制台消息是:Created PythonClass: (null)
还有下一个日志的字符串返回是否(null)
有人知道我在做什么错?