我试图在Swift中调用NSLayoutManager对象的lineFragmentRectForGlyphAtIndex方法。其描述是:
func lineFragmentRectForGlyphAtIndex(glyphIndex: Int, effectiveRange: CMutablePointer<NSRange>)
但我不知道该怎么称呼它。根据苹果文档,我不得不这样称呼它:
let someRange : NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)
文档就是这么说的。但我得到一个错误:“NSRange”不是“@lvalue$T5”的子类型
我该怎么办?
最佳答案
尝试将其设置为var
,而不是let
:
var someRange: NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)
基本上:在a
&
上使用var
可以提供与aCMutablePointer
兼容的内容,但是alet
不应该是可变的。因此类型错误。如果要传递空指针,只需编写
nil
而不是&someRange
(然后当然不需要声明额外的var
)。关于cocoa-touch - CMutablePointer <NSRange>死角,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24455010/