从Objective-C调用Python
发布时间:2020-12-16 04:57:07 所属栏目:百科 来源:网络整理
导读:我正在开发一个 Python / ObjC应用程序,我需要在ObjC的Python类中调用一些方法. 我尝试了几件事没有成功. 如何从Objective-C调用Python方法? 我的Python类正在Interface Builder中实例化.如何从该实例调用方法? 解决方法 使用PyObjC. 它包含在Leopard amp;
我正在开发一个
Python / ObjC应用程序,我需要在ObjC的Python类中调用一些方法.
我尝试了几件事没有成功. >如何从Objective-C调用Python方法? 解决方法
使用PyObjC.
它包含在Leopard& amp;后来. >>> 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]: ?a Type: NSCFArray Base Class: <objective-c class NSCFArray at 0x1002adf40> ` 要从Objective-C调用Python,最简单的方法是: >在Objective-C中声明一个包含要调用的API的抽象超类 即 @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"]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |