我试图在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/

10-11 14:25