这些对象什么时候在 ARC 下被释放?

2024-02-12

我有几个关于ARC(自动引用计数)的问题:

CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:appPath];
//Question 1: Here, I would expect the NSURL object to be autoreleased and
//therefore the CFURLRef will also be available for “a while.” Is this correct?

url = NULL;
//Question 2: Will this cause the NSURL to be released immediately?

NSURL *url = [NSURL fileURLWithPath:appPath];
url = nil;
//Question 3: Does the “url = nil” result in an immediate release of the NSURL?

NSURL *url = [[NSURL alloc] initWithString:@"/something"];
url = nil;
//Question 4: What about this?

CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:appPath];
//Question 1: Here, I would expect the NSURL object to be autoreleased and
//therefore the CFURLRef will also be available for “a while.” Is this correct?

是的,因为它们是同一个对象。仅类型发生变化;它仍然是对同一对象的相同引用。

也就是说,在您释放某个对象的最后所有权后,期望该对象继续“可用一段时间”是很脆弱的。如果您打算继续使用该对象,请至少拥有它那么长时间。当你用完之后就释放它,而且不要越早。

url = NULL;
//Question 2: Will this cause the NSURL to be released immediately?

NSURL *url = [NSURL fileURLWithPath:appPath];
url = nil;
//Question 3: Does the “url = nil” result in an immediate release of the NSURL?

是和不是。

对强变量的赋值(除非另有说明,变量是隐式强的)立即释放以前的值并保留新值。每次分配 NSURL 对象都会导致该对象被保留;每个任务的nil导致先前持有的物体被释放。

然而,在这两种情况下,URL 对象可能已被自动释放fileURLWithPath:。与往常一样,自动释放不会早于自动释放池结束时到期,因此该对象可能会继续存活到那时。这通常不是问题,但如果您制作大量对象(例如,在紧密循环中),它偶尔会弹出。

就你而言,是的,每个任务nil释放之前驻留在该处的对象,履行并结束您对该所有权的责任。

NSURL *url = [[NSURL alloc] initWithString:@"/something"];
url = nil;
//Question 4: What about this?

此处相同:您的分配释放了该对象。由于这个没有自动释放(你alloc自己动手),该对象将立即死亡。

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

这些对象什么时候在 ARC 下被释放? 的相关文章

  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • NSSharingService 共享子菜单

    如何在 Mac 应用程序中添加共享子菜单 例如 Safari gt 文件 gt 共享 我戳了戳Apple 共享服务示例代码 http developer apple com library mac samplecode SharingSer
  • NSString – 静态还是内联?有性能提升吗?

    如果我写的话会有任何性能提升吗 NSString helloStringWithName NSString name static NSString formatString Hello return NSString stringWith
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • 在 Objective C 的类方法中引用类本身

    我希望我没有跳过 ObjC 手册中的这一部分 但是是否可以从类的一个类方法中引用该类 就像在 PHP 中一样 您将使用 this 来引用当前实例 而 self 引用实例的类 this 的 ObjC 等价物将是 self 那么 PHP 的 s
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效
  • Mac OS X 上的 .dll 等效项 [重复]

    这个问题在这里已经有答案了 我来自一个Windows背景 我习惯于通过创建 dll 然后分发所有库和文档 因此 如果用户想要使用它 他会添加对库的引用并使用它 但是 在 Mac 中 我正在开发 SDK 并且我想要一种方法creating a
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • 有什么方法可以询问方法的名称吗?

    我正在尝试调试我正在开发的 iPhone 应用程序 向各种源文件添加 50 条 NSLog 语句的想法让我感到很兴奋 我想做的是写一对陈述 比如 NSString methodName self methodName NSLog metho
  • ABAddressBookCopyArrayOfAllPeople 中缺少联系人

    我试图从我的应用程序中的地址簿中查找电话号码 但很惊讶没有找到它 问题是 我已经在我的应用程序访问的控制台中打印了地址簿的所有号码 奇怪的是 有些联系人丢失了 我正在将输出与我的地址簿进行比较 虽然数量很少 但仍然如此 这就是我访问地址簿的
  • 如何按字母顺序对 UITableView 分区进行排序?

    我有一个包含 3 个类别的分段 UITableView 我正在使用这段代码 NSArray arrayOne NSArray arrayWithObjects one two three four nil NSDictionary dict
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • 核心数据 iCloud 同步中的关系完整性和验证

    考虑以下简单的实体模型 实体 A 与实体 B 具有一对一关系 称为b 实体 B 具有逆对一关系 称为a 这两种关系都不是可选的 A B b lt gt a 假设我们有两个设备 1 和 2 开始完全同步 每个对象都有一个 A 类对象和一个 B

随机推荐

  • 用于多个可见 HTML 元素的 Aria 两种方式标签

    我有一组可以相互影响的元素 div class cont a href Click Me a span Count span class count span span span Count span class count span sp
  • 异步回发后性能下降 - 滚动变得可怕

    我的任务是帮助提高 ASP NET 4 5 Web 表单应用程序的性能 不幸的是 该应用程序使用了 updatepanel 他们真的很邪恶 http encosia com why aspnet ajax updatepanels are
  • 如何部署具有多个验证器的超级账本锯齿网络?

    我正在尝试至少配置一个锯齿网络2 验证者和一些事务处理器 我使用的是 Ubuntu 18 04 所以唯一可能的解决方案是使用 docker 我搜索了一整天的工作示例 但仍然没有运气 官网上有一个例子here https sawtooth h
  • iOS 中 UITableView 的展开/折叠部分

    有人可以告诉我执行方法吗UITableView可展开 可折叠动画sections of UITableView如下 or 您必须创建自己的自定义标题行并将其作为每个部分的第一行 子类化UITableView或者已经存在的标题会很痛苦 根据他
  • 在 apex salesforce 中调试可计划作业

    我正在尝试运行一个可调度的作业我从未在 salesforce 中使用过可调度的作业 这是我的代码 global class scheduledMerge implements Schedulable global void execute
  • 在不同的远程结账分支

    我有一个带有另一个遥控器的存储库upstream除了origin 我可以git checkout origin master 但是当我跑步时git checkout upstream master I get error pathspec
  • 在 R 中操作子矩阵

    Nh lt matrix c 17 26 30 17 23 17 24 23 nrow 2 ncol 4 Nh Sh lt matrix c 8 290133 6 241174 6 096808 7 4449672 6 894924 7 6
  • SwipeItem XAML 绑定被忽略

    我无法让任何绑定适用于SwipeItem在一个RadListView 这类似于标准ListView 特别是 我试图绑定到Command财产 但是 我尝试绑定到其他属性 例如 Text 但无济于事
  • 跨多个 PdfPCell 的 iText RadioGroup/RadioButtons

    我想制作一个包含多行的 PdfPTable 在每一行中 我希望第一个单元格中有一个单选按钮 第二个单元格中有一个描述性文本 我希望所有单选按钮都属于同一单选按钮组 我过去曾使用 PdfPCell setCellEvent 和我自己的自定义
  • 从数据 API 动态创建递归树视图的最佳方法

    我正在学习 Angular 2 尝试从 可能非常大 第三方 API 构建可扩展的树视图 该 API 的底层结构如下 Home id 1053 Rugby League id 1054 Super League id 1103 Castlef
  • 如何确定某个分支是否是 jenkins 文件中的默认分支?

    我们在詹金斯上有一个多分支管道 我知道可以检查分支是否与名称匹配 例如 when branch master 不幸的是 我们的默认分支没有命名为 master 并且默认分支的名称会定期更改 有没有办法在不检查名称的情况下检查给定分支是否是默
  • 片段中的可扩展列表视图-可扩展列表不显示

    我试图在 Fragements 中实现可扩展列表视图 我已经测试了设置为 toast 的所有值 它工作正常 但是我的可扩展列表视图不是 Dispaly 我没有收到任何错误 请在我使用的代码下面找到 package com test expa
  • QGridLayout不同的列宽

    我正在尝试创建一个如下所示的布局 1 2 3 4 基本上 我希望第一行的单元格 1 比单元格 2 更薄 但第二行的单元格 3 和 4 应具有相同的宽度 是否有可能在 PyQt4 中使用 QGridLayout 创建这样的布局 QGridLa
  • 如果使用 JavaScript 选中复选框,如何重定向到特定链接?

    如果使用 JavaScript 选中复选框 如何重定向到特定链接 我正在这样做 但它对我不起作用
  • 如何知道通过 iframe 加载的页面是否在沙箱内? [复制]

    这个问题在这里已经有答案了 我正在尝试检测页面是否是通过沙盒 iframe 加载的 这可能吗 例如 我们提供自定义的可嵌入小部件 有些人认为通过将它们沙箱在 iframe 中是很聪明的 但这会破坏某些事情 例如window top loca
  • Ruby w/ Sinatra:相当于 Rails 中的 .js.erb 的东西是什么?

    js erb 很好 因为您可以使用它们替换页面的部分内容 而无需离开当前页面 这给网站 应用程序带来了更干净 更简洁的感觉 有没有办法在 sinatra 中使用它们 或同等的 只需将 js 添加到您要传递 erb 的符号末尾即可 啦 调用
  • ggsignif 包错误 stat_signif 需要以下缺失的美观: y

    这是我的数据的发明示例 x lt c Control Case Case Case Control Control Control Case Case Case y lt c Dead Dead Dead Alive Alive Dead
  • 标签和破折号组件并排

    我正在使用达世币 我想做的一件事是并排放置标签和滑块 以下代码呈现此效果 我可以对代码执行什么操作 以便滑块标签和滑块并排显示 谢谢 html Div html Label First Slider dcc RangeSlider id m
  • r igraph 查找所有循环

    我已经指示 igraph 并想要获取所有周期 周长函数可以工作 但只返回最小的周期 R中有没有一种方法可以获取长度大于3的图中的所有循环 没有顶点指向自身和循环 Answer recommended by R Language collec
  • 这些对象什么时候在 ARC 下被释放?

    我有几个关于ARC 自动引用计数 的问题 CFURLRef url bridge CFURLRef NSURL fileURLWithPath appPath Question 1 Here I would expect the NSURL