使用 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 和内存分配 的相关文章

  • 使用 NSError 检查错误的正确结构

    我正在编写各种例程 并尽力保持其整洁和重构 我正在创建的方法开始看起来与此代码类似 IBAction buttonPress id sender Create Document Shopping List with this documen
  • 为沙盒 Cocoa 应用程序创建临时文件

    我的应用程序是沙箱化的 根据最新的应用程序商店指南 我想创建一些临时文件 我可以这样做吗 如果 是 我可以在哪里这样做 有没有预先指定的路径 还有访问该路径的命令 您应该使用NSTemporaryDirectory 函数 它将查找并返回适合
  • 为什么 Nil 会增加一个枚举大小而不增加另一个枚举大小? Rust 枚举的内存是如何分配的?

    如果我定义以下枚举 Nil 不会增加枚举的大小 use std mem size of enum Foo Cons char enum Bar Cons char Nil println size of
  • Swift 中带圆角的 NSWindow

    我想要一个圆角的窗户 但我在每个角落都有一个白点 Code let effect NSVisualEffectView frame NSRect x 0 y 0 width 0 height 0 effect blendingMode be
  • Delphi 的内存分析工具?

    我建立了一个项目并运行它 然后在 Process Explorer 中查看它 结果发现它在启动时使用的 RAM 比我想象的要多 5 倍 现在 如果我的程序运行得太慢 我会将其连接到分析器并让它告诉我什么正在使用我的所有周期 有没有类似的工具
  • 有没有一种简单的方法来准备 Fortran 代码以进行并行调用

    我想使用 OpenMP 在 C 程序中并行求解多个大型 ODE 系统 由于某些原因 我需要使用 ODE 求解器 但我只能找到 Fortran 90 子例程 而且代码太大 无法简单地将其转换为 C 我知道 Fortran 广泛使用静态内存 因
  • 如何通过辅助功能 API 获取当前所选文本的全局屏幕坐标。

    我需要帮助来了解字典应用程序如何在任何应用程序上按 CMD CTRL D 时显示所选文本的以下弹出对话框 我想实施 我的可可应用程序具有相同的功能 我的应用程序将在后台运行 并显示有关所选文本的一些热键的建议 我已经实现了热键捕获 我只需要
  • 在 cocoa touch 中以编程方式将视图位置设置为右上角

    我需要确保一个视图 A 尺寸 200x200 始终与第二个视图 B 全屏尺寸 内的右上角对齐 我想确保无论设备方向如何 视图 A 都保留在该位置 事实是 当使用界面生成器来定位视图时 我对此没有任何问题 但我需要以编程方式构建它 我想我应该
  • gdb 声称它不知道如何运行

    我在 Mac Pro 上的 Mac OS X 10 6 6 上使用 Xcode 3 2 3 来构建 GrowlTunes 的修订版 5fd480ef577f咆哮开发存储库 http growl info hg growl developme
  • NSView 中 CALayers 的简单示例

    我正在尝试将多个 CALayer 添加到 NSView 但显示时我的视图仍然为空 这是我的代码 id initWithFrame NSRect frame self super initWithFrame frame if self sel
  • Swift 和 inout 参数中闭包的变量捕获

    我注意到 当 Swift 中的闭包捕获变量时 闭包实际上可以修改该值 这对我来说似乎很疯狂 也是一种获得可怕错误的绝佳方法 特别是当同一个 var 被多个闭包捕获时 var capture Hello captured func g thi
  • NSView 鼠标跟踪

    我在 Mac OS X 上遇到了 Cocoa NSView 的奇怪行为 我在 NSView 容器中有一个自定义 NSView 这个自定义 NSView 跟踪鼠标移动 点击 并有一个工具提示 当我在所描述的视图上方添加 NSView 时 即使
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 为什么这段代码不能产生正确的输出? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 给定一个字符串和一个数字 该函数将从
  • 获取选定行 NSTableView 的值

    我如何获取 NSTableView 中选定行的值 通过使用selectedRow see here https developer apple com documentation appkit nstableview 1535010 sel
  • 如何设置 NSButton OSX 的背景颜色

    我想设置 NSButton 的背景颜色 属性检查器中没有任何内容 所以我想知道是否有任何方法可以以编程方式完成此操作 系统控件需要遵循 Apple 的外观和感觉 因此您无法轻松更改背景颜色 如果你想完成这个 你需要子类化 NSButton
  • NSMenu 未调用 validateMenuItem 或 menuWillOpen

    我的 Mac 应用程序有一个 NSMenu 其委托功能validateMenuItem and menuWillOpen从来没有被调用过 到目前为止 网上的解决方案都没有帮助 看来我做的一切都是对的 菜单项的选择器属于同一类 管理它的类继承
  • Java固定内存映射

    有没有一种简单 高效的Map允许限制映射使用的内存的实现 我的用例是 我想在创建时动态分配大部分可用内存 但我不希望OutOFMemoryError将来的任何时候 基本上 我想使用这个地图作为缓存 但我想避免像这样的重缓存实现EHCache
  • 使用 PDFOutline 将 TOC 添加到 Swift/Cocoa 中的 PDFDocument

    我正在开发一个小程序 将多个单页 PDF 合并到一个多页 PDF 中 我正在 Swift4 MacOS Cocoa 中工作 但我一生都无法在 Swift 中找到任何类型的示例来创建大纲 仅遍历现有的大纲 我对此非常熟悉 使用对文档的最佳猜测
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence

随机推荐

  • 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 我应该 可以找出这应该有多少内存 因为我有范围的参考 不影响布