我知道可以通过编写预定义的完成来解决这个问题。
但PyObjC中有大量的类/方法。
例如,AppKit
模块本身包含 230393 类,AppKit.NSWindow
包含 26991 方法。 (我在PyDev中使用interpreterinfo.py
和pycompletion.py
来计算它们
有没有通用的方法来生成PyDev的许多pledefined完成脚本? 或者,当我使用PyObjC时,有没有办法正确完成?
添加于2013/03/12 07:56(JST)
我将objc
,Foundation
,AppKit
,Cocoa
等添加到PyDev的Force Builtin
。
现在PyDev向我展示了比以前更多的建议。
但是PyDev在PyObjC的类中找不到alloc()
方法。
在一般情况下,我们初始化NSWindow如下:
from Foundation import *
from AppKit import *
:
:
window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
rect,
style_mask,
backing,
flag)
因此,在输入alloc()
后,我希望window = NSWindow.
作为完成候选人。
第一个问题是PyDev(以及像PyCharm这样的其他IDE)在任何pyobjc的类上都找不到alloc
方法。我试图通过使用交互式shell找到alloc
方法,但我也找不到它。
第二个问题是第一个问题的结果,当我创建NSWindow的实例(或PyObjC中的任何一个)时,PyDev无法分析变量的类型。
因此,在我输入initWithContentRect_styleMask_backing_defer_
后,PyDev无法建议window = NSWindow.alloc().
。
如果您知道解决问题的方法,请告诉我。
答案 0 :(得分:1)
解析bridgesupport文件不是一个解决方案,它们只包含PyObjC公开的方法和类定义的一小部分(大多数信息都是从Objective-C运行时提取的)。
我自己不使用PyDev并且不知道它用于完成的文件格式,使用dir()
中的所有类objc.getClassList()
创建这些文件可能很容易。< / p>
显然,一种解决方法是告诉PyDev将您用作内置模块的PyObjC模块视为:PyDev FAQ