【发布时间】:2010-12-04 12:06:36
【问题描述】:
我正在实现一个 ObjC 协议作为 PyObjC 类的混合。
这个协议定义了一个'out'参数。
我找不到任何好的文档来说明实现定义它的 ObjC 协议的 Python 类的行为方式。
我找到了这个mailing list thread,但其中的建议不起作用。他们说要返回一个 Python 列表,其中方法的返回值作为第一项,out 参数作为第二项。
我已经尝试过了,我得到的只是从 ObjC (<type 'exceptions.ValueError'>: depythonifying 'char', got 'tuple') 调用时出现的异常。
似乎 PyObjC 在 depythonifying 方法参数中严格遵守 ObjC 协议,这很好,但它并不能帮助我尝试修改输出参数。
这是 ObjC 协议:
#import <Foundation/Foundation.h>
@protocol TestProtocol <NSObject>
- (BOOL)testMethod:(NSError **)error;
@end
这是实现此协议的 Python 类:
from Foundation import *
import objc
NSObject = objc.lookUpClass("NSObject")
TestProtocol = objc.protocolNamed("TestProtocol")
class TestClass(NSObject, TestProtocol):
def testMethod_(self, error):
return True, None
问题:如何在 Python 中返回 ObjC 输出参数?
【问题讨论】: