栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Objective-C调用Python

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从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"];


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号