使用访问器将属性设置为新分配的对象会导致内存泄漏

2023-11-29

我只是想确认以下是否会导致内存泄漏。

.h file

@property (nonatomic, retain) MyObject *foo;

.m file

@synthesize foo;
...

self.foo = [[MyObject alloc] init];

dealloc设置为

[foo release];

我的理解是,自动生成的访问器方法的实现看起来像

-(void)setFoo:(MyObject *)newObject {
    if (foo != newObject) {
        [foo release];
        foo = [newObject retain];
    }
}

走过self.foo = [[MyObject alloc] init];现在读给我来说,“分配了一个新的 MyObject 对象,其保留计数将为 1,将其传递给setFoo:, foo 永远不会等于 myObject,因为它是新分配的,因此释放旧值,增加 newObject 的保留计数使其成为2并将其分配给 foo”

dealloc 释放 foo 因此将其保留计数设置为1,这意味着这个对象被泄露了?

为了安全地做到这一点,我们应该像这样编写代码

self.foo = [[[MyObject alloc] init] autorelease];

我的理解正确吗?

EDIT

我意识到这个问题不太适合 SO,所以请随时为我指出一个更好的地方来问此类问题。


是的,这是绝对正确的。

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

使用访问器将属性设置为新分配的对象会导致内存泄漏 的相关文章

  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • 学习目标-C。使用 Xcode 3.2.1。错误是什么:程序收到信号:“EXC_ARITHMETIC”

    我正在使用 Stephen Kochan 的优秀著作 Programming in Objective C 2 0 来学习 Objective C 我也是 Xcode 新手 到目前为止 我的所有练习都运行良好 但是当我运行第 153 页上的
  • 直接泄漏和间接泄漏有什么区别?

    我从 LeakSanitizer 工具获得以下输出 正如该工具所理解的那样 直接泄漏和间接泄漏之间有什么区别 13 29107 ERROR LeakSanitizer detected memory leaks 13 13 Direct l
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • Lua表在内存中是如何处理的?

    lua如何处理表的增长 是否相当于ArrayList在Java中 IE 需要连续的内存空间 并且当它变得大于已经分配的空间时 内部数组被复制到另一个内存空间 有什么聪明的方法来引导吗 我的问题是 表是如何存储在内存中的 我不是问如何在 Lu
  • 替代已弃用的 NSNibLoading 方法(loadNibFile:、loadNibNamed: 等)?

    我发现 NSBundle 中的 NSNibLoading 方法 NSBundle loadNibFile externalNameTable withZone NSBundle loadNibNamed owner NSBundle loa
  • 使用 Nib 实现国际化。这真的是个好主意吗?

    在苹果文档中 他们说笔尖只需将笔尖翻译成多种语言即可实现国际化 我现在正在考虑一个更糟糕但现实的场景 你已经制作了一个巨大的用户界面 然后你将其翻译成 25 种语言 所以你会得到 25 个不同的笔尖 您还会在样式和定义 UI 方面获得巨大的
  • 为什么永久代空间不断增长?

    我读过几篇文章 我理解以下内容 如果我错了 请纠正我和 或编辑问题 java堆是这样分段的 年轻代 创建的对象放在这里 这部分被频繁且廉价地垃圾收集 老一代 在年轻代的垃圾收集中幸存下来的对象会移到此处 该区域的垃圾收集频率较低 并且使用对
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • iOS:从非图像数据生成图像(Godus,如风景)

    所以看到图像后Godus http www kickstarter com projects 22cans project godus我想知道如何生成简单的 非交互式的 2D 图像 with 不同高度或层数的颜色不同就像下面的图片一样 我只
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 维护 UISegmentedControl 中的选择

    我可以保持 UISegmentViewControl 段的选定状态吗 即 即使用户选择了另一个段 也可以保持一个段显示为选中状态 我似乎在任何地方都找不到任何可以做到这一点的东西 这是不可能开箱即用的 看如何才能选择 UISegmented
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • malloc :匿名映射和魔法区域

    我只是在摆弄内存映射 想查看用户空间虚拟内存区域映射 写了一些像这样的行 char ptr NULL printf Allocating 300KB n ptr malloc 300 1024 printf Allocated at p s
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • 将第 3 方库添加到 iPhone 应用程序时如何设置“标题搜索路径”的路径

    我想添加第 3 方库语音转文本 https github com todoroo iPhone Speech To Textto my Xcode项目 我只是拖xcodeproj文件在我的 iPhone 项目中 然后我按照目标依赖项 将二进
  • php/symfony/doctrine 内存泄漏?

    我在使用 symfony 1 4 和原则 1 2 将对象批量插入数据库时 遇到问题 我的模型有一种称为 Sector 的对象 每个对象都有多个 Cupo 类型的对象 通常范围从 50 到 200000 这些物体非常小 只是一个短标识符字符串
  • 监控剪贴板活动可可?

    是否可以在可可中 观看 用户剪贴板 例如 如果我的应用程序是系统托盘样式应用程序 例如 dropbox 客户端 我可以订阅用户在另一个应用程序中点击复制 粘贴时引发的事件吗 你可以随时查看Apple的示例代码 剪贴板查看器 http dev
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt

随机推荐

  • 从 Nib 加载可重用的 UITableViewCell

    我能够设计自定义 UITableViewCells 并使用以下位置的线程中描述的技术很好地加载它们http forums macrumors com showthread php t 545061 但是 使用该方法不再允许您使用reuseI
  • 根据key从字典数组中获取元素

    我有像这样的数组 String Any 我有一个valuestring 我想用该键提取元素不循环 一条线 为了检查它是否存在 我使用了这个 if array map 0 NAME as String contains value 有没有办法
  • 如何向 Date 添加天数?

    如何将天数添加到当前天 数Date使用JavaScript JavaScript 是否有像 NET 那样的内置函数AddDay 您可以使用以下方式创建一个 Date prototype addDays function days var d
  • JavaScript 中的动态实例化

    我有一个包含货币分类的下拉列表 可以将其实例化为 JavaScript 类 我目前使用 switch 语句来完成此操作 但我绝对确信有一种更雄辩的方法可以做到这一点 那么 有人可以告诉我更好的方法吗 有没有更好的方法来动态实例化类 func
  • 颤振:没有连接的设备

    我正在开发 flutter 项目 我是 flutter 的新手 我的 Avd 管理器仅显示除真实设备之外的虚拟设备 而我的另一个 android 项目显示我的真实设备和我的设备Android WIFI ADB 这是图像也显示了已连接的设备
  • 前向声明 typedef

    我有一个很大的头文件 10000 行 它是由我无法控制的脚本 程序自动生成的 为了避免将此文件包含在我的类的声明中 我转发声明了我需要的几种类型 myclass h namespace bl class TypeA class TypeB
  • Highcharts堆叠条形图隐藏数据标签不重叠

    请查看这个 http jsfiddle net HA5xE 因此 我有堆积条形图 并且当数据标签不适合该区域时我想隐藏它们 例如类别 8 中 根本没有数据标签 4 I saw http api highcharts com highchar
  • Scanner.hasNext 上的无限循环,从文件中读取

    我显然面临着无限循环while input hasNext 如下面的代码所示 File file new File data txt Scanner input new Scanner file int sum 0 while input
  • 改进脚本以获取前一周的日期

    我这里有一个小 powershell 脚本 可以找到前一天的最后一天 目前我正在做 如果是星期一 则减去 3 天 如果是星期日 则减去 2 天 如果是其他任何一天 则减去 1 天 这似乎有点愚蠢 有更好的方法吗 prevWD if Get
  • 如何使用 Ruby 生成 WSDL?

    我开始使用 Ruby 和 Soap 并有一些问题 如何为我创建的服务生成 WSDL 文件 它与 NET 客户端兼容吗 begin class MyServer lt SOAP RPC StandaloneServer Handler met
  • VB.Net:程序声明中的方括号[参数]是什么意思? [复制]

    这个问题在这里已经有答案了 我找到了这个子声明 Private Sub ReceivedText ByVal text As String input from ReadExisting If Me lblStatus InvokeRequ
  • 使用 jQuery AJAX 加载 php 内容

    我的问题 我有index html
  • VBscript - “系统找不到指定的文件”

    我正在尝试编写一个简短的 VBScript 它会打开 calc exe 和 wordpad exe 问题是 VBScript 不允许我打开 wordpad exe 我尝试以管理员身份运行该脚本 但这没有帮助 我的脚本如下所示 Set Wsh
  • 使用 jQuery 获取文件输入的选定文件名(不带路径)

    我用过这个 input type file val 获取选定的文件名 但它返回完整路径 如 C fakepath filename doc fakepath 部分实际上在那里 不确定它是否应该在那里 但这是我第一次使用文件上传的文件名 我怎
  • 在 JSfiddle 中添加图像 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想创建一个小提琴 在其中我必须添加图像 作为 div 的背景图像 我尝试使用左侧的添加资源 但它不起作用 我还尝试在我的文件夹结构中提供图像的完整路径 但这也不起作用 有人知道该怎
  • 在Python中从矩阵中选择列向量

    我想在 Python numpy 中的矩阵中索引列向量 并将其作为列向量而不是一维数组返回 x np array 1 2 3 4 x 1 gt array 2 4 Giving np transpose x 1 不是一个解决方案 继nump
  • 在 R 中绘制多项式回归曲线

    我有一个简单的多项式回归 如下所示 attach mtcars fit lt lm mpg hp I hp 2 现在 我绘制如下 gt plot mpg hp gt points hp fitted fit col red pch 20 这
  • Flash & Flex SDK/AS3 - 如何保持键盘焦点?

    我正在 Flex AS3 中编写 Flash 应用程序 但我似乎无法为其分配键盘焦点 我在开发初期就注意到了这个问题 并添加了一个带有 立即播放 按钮的启动屏幕 以吸引用户点击 但是 用户必须在应用程序上再次单击才能使键盘正常工作 更糟糕的
  • 如何在 Qt 项目中包含库

    我正在尝试创建一个使用 TagLib 库的项目 我不太确定到底该怎么做 我已经下载了标签库 1 11 1 我构建它如下 构建 zlib 首先让 CMake 创建一个 Visual Studio 解决方案文件 然后使用 Visual Stud
  • 使用访问器将属性设置为新分配的对象会导致内存泄漏

    我只是想确认以下是否会导致内存泄漏 h file property nonatomic retain MyObject foo m file synthesize foo self foo MyObject alloc init deall