Verwenden von NSGlyph und Speicherzuweisung

in einer Methode zum Verfolgen von Zeilenumbrüchenhäufig, Für einNSTextView visibleRectIch reserviere Speicher fürNSGlyph benutzenNSLayoutManager getGlyphs:range:.

sollte / kann ich herausfinden, wie viel Speicher dies sein sollte, da ich eine Referenz für den Bereich habe (ohne das Layout zu beeinflussen), und auch, welche Art von Bereinigung passieren sollte - ausgeführt mitBOGEN ?

der Code (der in einer Hauptwarteschlange läuft):

    NSLayoutManager *lm = [self.textView layoutManager];
    NSTextContainer *tc = [self.textView textContainer];
    NSRect vRect = [self.textView visibleRect];
    NSRange visibleRange = [lm glyphRangeForBoundingRectWithoutAdditionalLayout:vRect inTextContainer:tc];
    NSUInteger vRangeLoc = visibleRange.location;
    NSUInteger numberOfLines;
    NSUInteger index;
    NSGlyph glyphArray[5000]; // <--- memory assigned here
    NSUInteger numberOfGlyphs = [lm getGlyphs:glyphArray range:visibleRange];
    NSRange lineRange;
    NSMutableIndexSet *idxset = [NSMutableIndexSet indexSet];
    for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++) {
        (void)[lm lineFragmentRectForGlyphAtIndex:index effectiveRange:&lineRange withoutAdditionalLayout:YES];
        [idxset addIndex:lineRange.location + vRangeLoc];
        index = NSMaxRange(lineRange);
    }
    self.currentLinesIndexSet = idxset;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage