在PyObjC中,当函数为void时,我可以传递None作为输出参数,然后我将在返回的值中得到输出参数但是当涉及到非void的函数时,我找不到一个例子它是怎么回事完成。我要做的是从已经启动的NSLayoutManager实例中获取以下函数中的GlyphBuffer。这是Objective c中的语法:
NSInteger numGlyphs = [layoutManager numberOfGlyphs];
NSGlyph *glyphs = (NSGlyph *)malloc(sizeof(NSGlyph) * (numGlyphs + 1));
[layoutManager getGlyphs:glyphs range:NSMakeRange(0, numGlyphs)];
[textStorage removeLayoutManager:layoutManager];
正如您所看到的,字形是一个NSGlyphs数组,其长度由layoutManager numberOfGlyphs返回。我在python中使用以下方法:
layoutManager.getGlyphsInRange_glyphs_properties_characterIndexes_bidiLevels_ (glyphsRange, None, None, None, None)
但是我没有获得字形缓冲区,因为函数不是void,而是返回glyphBuffer中的字形数,如here所述。字形缓冲区应该是UnsafeMutablePointer。我找不到将NSGlyph数组传递给第二个参数的方法。当我通过列表时,我得到一个追溯:
ValueError: depythonifying 'pointer', got 'list'
有谁知道它是否可能以及如何实现?
由于
答案 0 :(得分:0)
点击此博客
http://michaellynn.github.io/2015/08/08/learn-you-a-better-pyobjc-bridgesupport-signature/
它应该有一些如何完成你正在寻找的例子。
答案 1 :(得分:0)
因为我试图在LayoutManager中提取字形的位置,所以我使用了LayoutManager的locationForGlyphAtIndex方法,它可以很好地用于我的目的。