我正在将Objective-C程序转换为PyObjC并缺乏两者的经验。
这是Objective-C部分
WebPreferences *p = [webview preferences];
if([p respondsToSelector:@selector(setWebGLEnabled:)]){
[p performSelector:@selector(setWebGLEnabled:) withObject:[NSNumber numberWithBool:YES]];
}
这基本上是一个未记录的方法(是的,我知道我无法提交到app store)以在WebView中启用WebGL
我无法弄清楚如何将此部分翻译成PyObjC
答案 0 :(得分:1)
您不必使用performSelector,只需调用方法:
p = webview.preferences()
p.setWebGLEnabled_(True)
这是有效的,因为PyObjC不会查看头文件,而是在Objective-C运行时查找哪些方法。
答案 1 :(得分:0)
这座桥的神奇之处。你可以只使用选择器的字符串 - 方法名称(带冒号,而不是下划线):
>>> from AppKit import *
>>> s = NSString.stringWithString_("Lemon curry?")
>>> s.respondsToSelector_("length")
True
>>> s.respondsToSelector_("count")
False
>>> s.respondsToSelector_("writeToFile:atomically:encoding:error:")
True
>>> s.performSelector_("lowercaseString")
u'lemon curry?'