CMutablePointer <nsrange>死胡同</nsrange>

时间:2014-06-27 15:02:34

标签: cocoa-touch cocoa swift

我试图在Swift中调用NSLayoutManager对象的lineFragmentRectForGlyphAtIndex方法。它的描述是:

func lineFragmentRectForGlyphAtIndex(glyphIndex: Int, effectiveRange: CMutablePointer<NSRange>)

但我无法弄清楚我怎么称呼它。根据Apple文档,我必须这样称呼它:

let someRange : NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)

那是什么文件说的。但我收到一个错误:&#39; NSRange&#39;不是&#39; @lvalue $ T5&#39;

的子类型

我该怎么办?

1 个答案:

答案 0 :(得分:2)

尝试将其设为var而不是let

var someRange: NSRange = ...
layoutManager.lineFragmentRectForGlyphAtIndex(0, effectiveRange: &someRange)

基本上:使用&上的var可以为您提供与CMutablePointer兼容的内容,但let不应该是可变的。因此类型错误。

如果要传递空指针,只需编写nil而不是&someRange(当然,您不需要声明额外的var)。