从Objective-C调用Python

从Objective-C调用Python,第1张

从Objective-C调用Python

使用PyObjC。

它包含在Leopard及更高版本中。

>>> from Foundation import *>>> a = NSArray.arrayWithObjects_("a", "b", "c", None)>>> a(      a,      b,      c)>>> a[1]'b'>>> a.objectAtIndex_(1)'b'>>> type(a)<objective-c class NSCFArray at 0x7fff708bc178>

它甚至可以与iPython一起使用:

In [1]: from Foundation import *In [2]: a = NSBundle.allframeworks()In [3]: ?aType:       NSCFArraybase Class: <objective-c class NSCFArray at 0x1002adf40>

`

要从Objective-C调用Python,最简单的方法是:

  • 在Objective-C中声明一个抽象超类,其中包含要调用的API

  • 在类的@implementation中创建方法的存根实现

  • 在Python中将该类子类化并提供具体的实现

  • 在抽象超类上创建工厂方法,该方法创建具体的子类实例

@interface Abstract : NSObject- (unsigned int) foo: (NSString *) aBar;+ newConcrete;@end@implementation Abstract- (unsigned int) foo: (NSString *) aBar { return 42; }+ newConcrete { return [[NSClassFromString(@"MyConcrete") new] autorelease]; }@end.....class Concrete(Abstract):    def foo_(self, s): return s.length().....x = [Abstract newFoo];[x  foo: @"bar"];


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5639761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存