我正在实现一个 ObjC 协议作为 PyObjC 类的混合。
该协议定义了一个“out”参数。
我找不到任何关于实现定义它的 ObjC 协议的 Python 类如何表现的好的文档。
我找到了这个邮件列表线程,但其中的建议不起作用。他们说要返回一个 Python 列表,其中方法的返回值作为第一项,out 参数作为第二项。
<type 'exceptions.ValueError'>: depythonifying 'char', got 'tuple'
我已经尝试过了,我得到的只是从 ObjC ( )调用时出现的异常。
似乎 PyObjC 在 depythonifying 方法参数中严格遵守 ObjC 协议,这很好,但它并不能帮助我尝试修改 out 参数。
这是 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 输出参数?