使用 NSGlyph 和内存分配

2023-12-03

在跟踪换行符的方法中频繁地, for a NSTextView visibleRect,我正在分配内存NSGlyph to use NS布局管理器 getGlyphs:range:.

我应该/可以找出这应该有多少内存,因为我有范围的参考(不影响布局),而且,应该进行什么样的清理——运行ARC ?

代码(在主队列上运行):

    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;

随着NSGlyph glyphs[5000]符号,您正在堆栈上分配内存。但它只需要保存 5000 个字形visibleRange.length + 1 glyphs:

字形数组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 NSGlyph 和内存分配 的相关文章

随机推荐

  • IHubContext SignalR MVC 的 Autofac 注入

    我正在尝试让 SignalR 与 Autofac 一起工作 我有一个我在这里所做的精简版本的存储库 https github com justsayno signalr autofac 这是改编自使用的作品GlobalHost https
  • 响应式设计中的字体大小和元视口

    我必须从事一个需要响应的项目 这是我第一次这样做 我被一个 可能是愚蠢的 问题困扰 假设我有一个非常简单的页面 div style font size 6 SO div
  • 如何在安装过程中修改.NET配置文件?

    我使用 app config 文件来存储一些值 映射数据库的路径 数据连接选择 这些设置在用户计算机上有所不同 我希望安装程序能够正确设置它们 是否有一个安装程序可以在安装过程中使用 NET 配置文件并允许我创建一些对话框来帮助我填写这些值
  • WooCommerce 返回 get_total() 价格(保留两位小数)

    您好 我正在实现一个支付网关插件 但遇到了问题 它显示一个错误 他们说这是因为购物车的总量和价格网站为他们发送的总量不同 这是因为他们得到的结果没有十进制数字 在购物车中是519 00他们只收到519 该插件获取购物车总数 order gt
  • 使用 PC 调试 iPad Safari

    我想在 iPad 上的 Safari 上测试我的网站 我只有另一台电脑 有没有办法让我使用移动 Chrome 进行远程调试 如 ADB Android 调试桥 我在 StackOverflow 上搜索 似乎有一个 Adob e Edge I
  • 使用 extern 全局变量的正确方法是什么?

    文件 a cc int a 0 文件 b cc include a cc 文件 main cc include b cc extern int a int main g c a cc g c b cc g main cc a o b o e
  • 在javascript html5中将整个图像包裹在圆柱形杯子上

    我想将图像包裹在圆柱形杯子上 我正在使用 html5 和 Java 脚本来实现这个解决方案 我从这个链接得到了一些想法 https stackoverflow com questions 31424117 但我没有从这个链接得到解决方案 我
  • 开源asp.net mvc项目的项目结构推荐

    您如何看待基于 asp net mvc 应用程序构建的开源 CMS 应用程序的项目结构 该项目的昵称是 Gol 以下帖子概述了基本要求 ASP NET MVC 中开源 CMS 的想法 目前我正在考虑这样放置 Gol Core Session
  • “times 510-($-$$) db 0”不起作用

    我正在学习引导扇区 我从以下位置下载了 nasm installer x64 exeNASM网站 我的操作系统是win7 64位 当我运行以下代码时 它无法正常工作 mov ah 0x0e mov al the secret int 0x1
  • 嵌套数组上的 Swift 相等运算符

    为什么最后一条语句无法编译并出现错误 Binary operator cannot be applied to two Simple operands 有没有办法修改Simple构造或扩展 运算符能够对嵌套数组 或字典 执行相等性检查 va
  • Python 中的客户端与服务器通信

    我已经建立了客户端 服务器通信 问题是我无法发送多于一条消息 我尝试修复它 但我不知道出了什么问题 这是我的代码 服务器代码和客户端代码在两个不同的Python窗口中运行 server import socket s socket sock
  • Ember-Data:访问旁加载资源列表?

    我有一些 JSON 具有这种结构 documents路径 ID 是 UUID tags id a33fc396 2428 11e3 8eeb 0800270f33f4 name test
  • 如何在 Pandas 中使用 allocate() 方法创建包含空格的列

    样本数据 import pandas as pd df1 pd DataFrame Original City Daimler Chicago Mitsubishi LA Tesla Vienna Toyota Zurich Renault
  • Javascript 中的即时搜索功能

    我正在使用以下 JavaScript 来实现即时搜索功能 以检测访问者何时停止书写 因此该功能不会在每次按键时运行 它可以工作 但延迟超过 1000 毫秒 即使我将其设置为 200 毫秒 即时搜索功能运行之前也会有 1 2 秒的延迟 是否有
  • 如何使用 .pfx 文件签署 Java 小程序?

    我试图使用本指南使用我们公司的 pfx 证书签署 jar 小程序存档 以及来自互联网的其他一些内容 http www globalsign com support ordering guides SignJavaCodeAppletsPFX
  • 从字符串中去除中文字符(vba)

    我正在使用 Microsoft Project VBA 将我的活动名称从英文翻译成中文 我的问题是我在一些英文活动名称中嵌入了一些中文翻译 我想在将字符串传递给 Microsoft Translator 之前去掉中文字符 关于我如何做到这一
  • Android ListView ArrayList 上的空指针异常

    我有一个显示数组列表内容的列表视图 我正在使用一个简单的适配器来实现这一点 就像这样 public static ArrayList
  • Docker 使用 Java 实现两个容器之间的通信

    有两个java文件 Server java和Client java 两者都在单独的容器中 码头工人文件 我用于服务器的 dockerfile 在名为 服务器 的文件夹中 是 FROM java 8 COPY Server java RUN
  • 会话过期后从数据库中删除它吗?

    这可能是一个愚蠢的问题 但我想知道每 15 分钟从数据库中删除所有过期的 会话 是否是一个好主意 或者只是把它留在那里 会话在 X 分钟后过期 不再有用 似乎只是占用空间 当我的团队在 NET 应用程序中部署 SQL Server 会话状态
  • 使用 NSGlyph 和内存分配

    在跟踪换行符的方法中频繁地 for a NSTextView visibleRect 我正在分配内存NSGlyph to use NS布局管理器 getGlyphs range 我应该 可以找出这应该有多少内存 因为我有范围的参考 不影响布