在 Cocoa 中使用 autorelease 的成本是多少?

2023-12-23

大多数苹果文档似乎都避免使用自动释放对象,特别是在创建 gui 视图时,但我想知道使用自动释放对象的成本是多少?

UIScrollView *timeline = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, 320, 34)];
[self addSubview:timeline];
[timeline release];

最终我应该使用一种策略,其中所有内容都是自动释放的,并且使用保留/释放应该是特定情况下规则的例外?或者我通常应该使用保留/释放,而自动释放是从 [NSString stringWithEtc...] 等便捷方法返回的对象的例外?


有两个成本:

  1. (假设您可以选择避免自动释放对象。)您实际上不必要地延长了对象的生命周期。这可能意味着您的内存占用量会不必要地增加。在受限平台上,这可能意味着如果超过限制,您的应用程序将被终止。即使您没有超出限制,也可能会导致您的系统开始交换,这是非常低效的。

  2. 查找当前自动释放池、向其中添加自动释放对象、然后在最后释放该对象(额外的方法调用)的额外开销。这可能不是一个很大的开销,但它会增加。

任何平台上的最佳实践是尽可能避免自动释放。

回答问题:

最终我应该使用一种策略,其中所有内容都是自动释放的,并且使用保留/释放应该是特定情况下规则的例外?

恰恰相反。

或者我通常应该使用保留/释放,而自动释放是从 [NSString stringWithEtc...] 等便捷方法返回的对象的例外?

你应该always如果可以的话,使用保留/释放——在这种情况下NSString通常不需要使用stringWithEtc方法有initWithEtc等价物。

也可以看看这个问题 https://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when-writing-objective-c-and-cocoa#175874.

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

在 Cocoa 中使用 autorelease 的成本是多少? 的相关文章

  • 如何在 iOS 中以编程方式在 UITableViewCells 中添加图像

    我需要添加不同的图像UITableViewCells以编程方式 我怎样才能做到这一点 我正在尝试一些代码 但图像不显示在UITableViewCells 这是我下面的代码 void viewDidLoad arrImages NSMutab
  • 具有自定义视图的相机

    我的应用程序使用相机 我想在相机预览上添加叠加层 例如 我想在使用相机时使用相框 还想添加一个用于相机操作的自定义栏 请帮助我做同样的事情 您可能正在尝试使用 UIImagePickerController 但我知道这个可以解决你的问题 您
  • 在 wkwebview 中启用摄像头和麦克风访问

    我有一个针对移动设备优化的网络应用程序 它利用getUserMedia访问网络摄像头和麦克风资源 我正在将这个应用程序包装在WKWebView因为我想提供原生应用程序体验 我知道 iOS 不允许通过浏览器访问相机 但是有什么方法可以使用本机
  • 在 CUDA 中的设备内存上分配 2D 数组

    如何在 Cuda 中的设备内存中分配和传输 往返于主机 2D 数组 我找到了解决这个问题的方法 我不必展平阵列 内置的cudaMallocPitch 函数完成了这项工作 我可以使用以下命令将阵列传输到设备或从设备传输阵列cudaMemcpy
  • 如何使用 UIScrollView?

    我该如何使用UIScrollView 请给我一个带有一张滚动图像的简单示例 这将使您深入了解UIScrollView控制 学习 UIScrollView 的基础知识 https stackoverflow com questions 159
  • 编程界面方向更改不适用于 iOS

    因此 我有一个项目 当用户按下按钮时 我需要强制改变方向 我创建了一个github 上的示例应用程序 https github com vradenburg ForcedOrientationChange来演示这个问题 interface
  • 使用deleteRowsAtIndexPaths后indexPath未更新

    我创建了一个方法 当用户想要删除单元格时更新我的 UITableView void removeMoreFriendsRow NSNotification notification NSDictionary d notification u
  • 更改从 xib 加载的 UITableViewHeaderFooterView 上的背景颜色表示使用 contentView.backgroundColor

    I m 从 xib 文件创建 UITableViewHeaderFooterView https stackoverflow com a 20073742 35690 几乎一切都工作正常 问题是 现在当我尝试更改背景颜色 或者如果我在 xi
  • 从 NSString 中去除非字母数字字符

    我正在寻找一种快速简便的方法来从文本中删除非字母数字字符NSString 可能使用的东西NSCharacterSet 但我累了 似乎没有什么返回只包含字符串中字母数字字符的字符串 我们可以通过拆分然后合并来做到这一点 组件Separated
  • 如果没有解析器生成器,如何用 C 或 Objective-C 编写解析器?

    我正在尝试用 C 或 Objective C 制作一个计算器 它接受以下字符串 8 2 4 3 9 2 并返回答案 2920 我不想使用像 Lex 或 Yacc 这样的生成器 所以我想从头开始编码 我该怎么做呢 除了 龙 这本书之外 还有其
  • 从选定的文件夹中获取大小 >100MB 的文件列表及其路径目标 c

    我想获取我的 mac 系统的所有文件及其路径和大小的列表 由此 我只想过滤那些文件大小超过 100 MB 的文件 我使用下面的代码获取了系统的大小 NSError error NSFileManager fileManager NSFile
  • 在 Postgres 中为特定查询设置 work_mem

    我正在使用一个委托给 JDBC 驱动程序的库PostgreSQL 而且有些查询非常复杂 需要更多内存 我不想设置work mem对于所有查询来说都是大的 只是这个子集 问题是执行以下代码会导致错误 pseudo code for what
  • 具有 3D 旋转功能的 CAEmitterCell

    我正在尝试使用 CAEmitterLayer 和 CAEmitterCell 重现从顶部落下的小纸片效果 到目前为止 我得到了它的 2D 动画 但是我很难让每个单元格在掉落时旋转 如何对每个粒子应用随机旋转 我尝试过 3D Transfor
  • 如何在iPhone sdk静音模式下播放声音文件?

    如何在iPhone sdk静音模式下播放声音文件 我正在尝试以静音模式播放声音文件 但结果为零 我试过这段代码 SystemSoundID soundID AudioServicesCreateSystemSoundID CFURLRef
  • Objective C - 后台执行选择器并且分离新线程选择器?

    detachNewThreadSelector 和performSelectorInBackground 都用于在后台调用方法 2种方法有什么区别吗 或者它们的工作方式相同吗 它们本质上是相同的 但范式略有不同 他们在幕后做着完全相同的事情
  • 用xCode制作图表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您好 我需要绘制一些数组来分析信号 我有一个可可项目正在进行 谁能告诉我在哪里可以找到简化这项任务的工具 基本上我想像在图形计算器上一样显
  • 在 Objective-C 中创建二维数组

    在 Objective C 中声明二维数组最简单的方法是什么 我正在从网站的文本文件中读取数字矩阵 并希望获取数据并将其放入 3x3 矩阵中 将 URL 读入字符串后 我创建一个 NSArray 并使用 ComponentsSeparate
  • 使用 OpenGL ES 绘制地球仪

    我正在尝试渲染一个地球仪 上面有地图的球体 OpenGL ES 1 1 on iOS 我能够绘制球体并绘制边界 但有一个问题 在我看来 不面向前方的线条也被绘制在屏幕上 像这样 在图片中 您可以看到美国渲染得很好 但您可以看到澳大利亚渲染在
  • EKCalendarChooser 多选不起作用

    我正在尝试使用EKCalendarChooser获取用户选择的多个日历 我是这样表达观点的 EKCalendarChooser dvc EKCalendarChooser alloc initWithSelectionStyle EKCal
  • 检测 UICollectionView 中的页面更改

    我尝试寻找这个问题一段时间 但找不到这个问题的答案 我的问题是我有一个UICollectionView滚动方向是Horizontal with Paging Enabled 我的问题是我想保留用户所在的当前页码 所以我创建了一个int变量

随机推荐

  • 为什么我无法在 gdb 调试器中使用“print”访问向量中的值?

    我正在学习使用 gdb 调试器 但当该向量包含从另一个向量复制的值时 无法访问该向量的值 最终 下面的程序做了我想要它做的事情 将 nums 的值复制到新的向量 copyOfNums 中 但是当我在执行 copyNums 中的第一个 for
  • 一端的套接字上的 close() 是否也会在另一端关闭?

    如果 ESTABLISHED 套接字 通过客户端连接后connect 退出 因此内核关闭所有打开的文件描述符 另一端会发生什么 如果客户端发送FIN并且服务器ACK它 这只是半关闭状态 但是服务器试图read 在那个插座上 然后会发生什么
  • XQuery:为什么“() = ()”和“() eq ()”的计算结果都为 false?

    以下 XQuery 片段 let x return if not x eq x and not x x then wat else makes sense returns wat 为什么 这有效布尔值 https learn microso
  • 仅匹配以“www”或“http(s)://”开头的 URL,仅匹配以“www”或“http(s)://”开头的 URL

    我正在使用一个正则表达式我的博客网站的模式 使 URL 地址为可点击的链接 效果很好 该模式具有以下格式 href a zA Z0 9 2 256 a z 2 4 b a zA Z0 9 所以有什么问题 但最近我发现这个模式也匹配文件名因此
  • python中文件的权限更改

    我想更改当前目录树中所有文件的文件权限 我正在尝试打开每个目录并打开文件并使用更改权限os chmod 但是出现错误 import os import stat for files in os walk os chmod files sta
  • 使用 C# 在 List<> 中查找项目

    我有一个包含对象集合的列表 如何在该列表中搜索某个项目object Property myValue 您有几个选择 Using 可枚举 Where https learn microsoft com en us dotnet api sys
  • 我可以使用 SQL Server 2012 Express 来使用 SSDT/BIDS/SSIS 吗?

    理想情况下 我想在我的台式电脑上制作 SSDT SSIS 包 以便我可以测试并将其部署到生产服务器环境 在我的电脑上我有 Windows 7的 视觉工作室2008 Visual Studio 2010 外壳 SQL Server Expre
  • 文件未上传 PHP

    我尝试编写代码以将文件上传到 PHP 中的 media 文件夹 由于某种原因 它仍然不起作用 下面是执行代码 move uploaded file FILES file tmp name media FILES file name or d
  • 如何初始化静态向量成员?

    例如 struct A static vector
  • 如何判断资源是否不受管理?

    我正在使用 Visual Studio 2017 编写 C 应用程序 我努力通过使用 using 语句来处理我实例化的所有对象 如果我实例化的对象不基于可隐式转换为 System IDisposable 的类型 Visual Studio
  • Vim 搜索并突出显示脚本中的控制

    我正在编写一个脚本 我想在其中以编程方式控制搜索 并突出显示它们 search 函数结果没有突出显示 我认为 因此使用该函数对我来说没有用 我想做的是使用 正常 命令来搜索变量 但这似乎并不简单 我可以编写命令 execute normal
  • 在 R 中保存和增量更新最近邻模型

    有几个最近邻 R 包 例如 FNN RANN yaImpute 但它们似乎都不允许保存 NN 数据结构 覆盖树 KD 树等 以便可以计算新查询的最近邻重建整个树 R中有这样的函数吗 我正在寻找一个返回数据结构的函数 当新数据到达时我可以增量
  • mathjax \textsc

    我如何让像 textsc 这样的东西工作 显然有可能启用它这个数学溢出答案 https meta mathoverflow net discussion 1046 why doesnt mathit work 还有其他人找到了至少允许使用小
  • 方向更改时如何更改网格布局

    我正在创建一个win8应用程序 我需要更改网格的布局 以便当用户在方向之间翻转时所有内容都适合屏幕 我明白我需要使用VisualStateManager但我无法理解任何教程 如果我有这个代码
  • PayPal 完整日期格式

    PayPal 以以下格式发回 payment date 字段 19 19 09 Sep 27 2011 我正在使用 php 来计算 payment date 的剩余天数 但我的代码是基于在 2011 09 27 12 19 00 获取格式
  • 如何在 Angular 2 项目中分离管理和前端 Web

    我将使用 Angular 2 构建一个完整的项目 该项目包含管理面板和供用户使用的前端 Web 我不知道如何将管理与网络分开 我应该使用路由吗 但这需要我导入内部的所有组件app module ts或者还有另一种方法可以使用两个app mo
  • 在 Groovy 中使用 JSONBuilder 排除空值

    是否可以使用默认的 JsonBuilder 库在 Groovy 中创建 JSON 值以排除对象的所有空值 例如 Jackson 在 Java 中通过注释类来排除空值所做的事情 一个例子是 userId 25 givenName John f
  • 如何在11g中通过select语句为新创建的表的列设置默认值

    我在 Oracle 11g 中创建一个表 其中一列使用默认值 语法是 create table xyz emp number ename varchar2 100 salary number default 0 这样就创建成功了 由于某些原
  • 为什么重载方法没有被调用?

    我认为被调用的方法是在运行时决定的 或者我错过了什么 示例代码 class Program static void Main string args var magic new MagicClass magic DoStuff new Im
  • 在 Cocoa 中使用 autorelease 的成本是多少?

    大多数苹果文档似乎都避免使用自动释放对象 特别是在创建 gui 视图时 但我想知道使用自动释放对象的成本是多少 UIScrollView timeline UIScrollView alloc initWithFrame CGRectMak