Objective-C 在函数中返回分配的内存 == 不好?

2024-01-07

这是在 iPhone 上。

那么如果我有一个像这样的函数呢

- (SomeObject*)buildObject;

我是否需要传递一个已经在外部分配的变量,例如

- (void)assignObject(SomeObject** out);

或者我可以做

- (SomeObject*)buildObject
{
   return [[[SomeObject alloc] init] autorelease];
}

并像这样使用它

SomeObject* obj = [[otherObject buildObject] retain];

我想做最后一个,但据我所知,这是未定义的,因为 autorelease 仅保证对象直到函数结束?


在 Objective-C 中,内存管理契约如下:谁调用了 alloc,谁就负责调用release。如果构造函数调用[[[Class alloc] init]release],则对象会快速创建和销毁。

为了解决这个问题,构造函数需要使用 autorelease,如下所示:

return [[[Class alloc] init] autorelease];

它注册要在当前运行循环结束时释放的对象,除非有东西保留它,例如构造函数的调用者。就您而言,第二个示例正是您想要做的。

So:

- (SomeClass*) buildObject {
   return [[[SomeClass alloc] init] autorelease];
}

- (void) doSomething {
   c = [self buildObject];
   // Call [c retain] if you want c to stay around after the current run
   // loop is finished and clean it up later, e.g. in your delloc method.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C 在函数中返回分配的内存 == 不好? 的相关文章

  • 动态模拟iOS动态类型系统文本大小(UIContentSizeCategory)

    我想使用不同的系统文本大小选择 包括辅助功能大小 轻松测试我的应用程序 这些可以在 设置 应用程序中进行设置 显示和亮度 gt 文本大小或常规 gt 辅助功能 gt 较大文本 目前我能找到的唯一方法是进入 设置 并使用 UI 更改值 编辑
  • iOS 中的自定义阿拉伯字体

    我正在尝试制作一个主要显示阿拉伯语内容的 iPhone 应用程序 我想使用自定义阿拉伯字体来显示该内容 而不是 iPhone 默认的阿拉伯字体 我使用了以下代码 void viewDidLoad super viewDidLoad arab
  • iOS - 单元测试异步代码

    我试图测试的方法部分如下 void configureTableFooterView dispatch async dispatch get main queue self tableView tableFooterView nil if
  • font-family 未应用于移动设备

    我的 font family 属性有问题css 我有一个标题 我想使用特定字体设置样式 我在用 fontface 在我的桌面上它工作正常 但在iPhone and iPad我得到了一些标准字体 我认为可能是次 但我不确定 我做了一些研究并尝
  • 如何将“前往此处的路线”按钮添加到地址簿中?

    谷歌地图应用程序有 到这里的方向 和 从这里出发的方向 例如http static intomobile com wp content uploads 2008 10 iphone 22 os google maps street view
  • 调整在drawRect中绘制的矩形的大小

    我有两个UIViews 我的目标是绘制包含这两个的最小矩形UIViews 我想用我要摆脱的框架画一个矩形 CGRectUnion view1 frame view2 frame 但是当我移动两者中的任何一个时UIViews 我需要更新轮廓矩
  • 处于编辑模式时滑动即可删除

    我有一个使用 uitableview 的 iPhone 应用程序 我希望始终显示 重新排序 控件 并让用户滑动以删除行 我目前采取的方法是将表格视图置于编辑模式并允许在编辑模式下进行选择 self tableView editing YES
  • 如何获取未知大小 NSArray 的前 X 个元素?

    在 ObjectiveC 中我有一个 NSArray 我们称之为NSArray largeArray 我想要一个新的NSArray smallArray仅包含前 x 个对象 或者如果largeArray 的大小已经 这种方法 NSArray
  • 使用 Objective-C 将 HTML 文本转换为纯文本

    我有巨大的NSString里面有 HTML 文本 该字符串的长度超过 3 500 000 个字符 我怎样才能将此 HTML 文本转换为NSString里面有纯文本 我正在使用扫描仪 但它运行速度太慢 任何想法 这取决于您的目标 iOS 版本
  • 我如何知道网页视图已加载完成

    我有网络视图 因为我正在加载pdf文件 pdf 文件大小为 2 mb 因此需要时间 我想添加指标 为此 我如何知道我的文件已加载到网络视图中 UIWebView 委托 http developer apple com library ios
  • Bison/Flex 中哪里可以释放内存?

    我使用 Bison 和 Flex 的时间或多或少有 1 个月 所以如果我没有看到明显的东西 但我不认为是 我很抱歉 我在使用 Flex Bison 释放内存时遇到问题 我的代码如下所示 parser l DATE yylval str st
  • 循环缓冲区录音 iOS:可能吗?

    我的一个客户想要连续录制音频 当他单击 提交 时 他只想提交最后 10 秒的内容 所以他想要连续记录并且只保留最后 x 秒 我认为这需要类似循环缓冲区的东西 但是 作为 iOS 的新手 它看起来像AVAudioRecorder只能写入文件
  • AVPlayerLayer获取图像到UIImageView缓冲区

    我尝试 playerLayer renderInContext UIGraphicsGetCurrentContext 它将显示黑色背景 所以我得到当前播放器项目作为连续的重击图像 它看起来不像视频播放 只是静态图像连续流动 那么还有其他选
  • 使用 iOS 分布式应用程序时 Google Cloud Messaging 显示“notRegistered”

    我在 iOS 应用程序上实现了 GCM 服务 我使用 PHP 在服务器上发送 GCM 当应用程序由开发配置文件签名时 它可以完美运行 也就是说 当应用程序使用 GCM 配置注册自身时 它始终返回一个正常运行的设备令牌 我可以使用令牌向设备发
  • 在 iOS 模拟器主屏幕或锁屏中设置壁纸(背景图像)

    当我正在绞尽脑汁思考某件事时 我的脑海中突然出现了这个想法 我们可以将模拟器的主屏幕背景图像设置为我们选择的图像吗 Xcode 3 2 2 模拟器 3 1 3 就是一个很好的例子 Certain versions of the simula
  • 从视频创建缩略图 - 提高速度性能 - AVAsset - iPhone [重复]

    这个问题在这里已经有答案了 我正在使用基于以下线程中的代码的代码来生成视频缩略图 从 iPhone SDK 中的视频 URL 或数据获取缩略图 https stackoverflow com questions 1347562 gettin
  • 释放 Core Foundation 对象引用

    我是否需要释放 Core Foundation 对象来清理内存 如果是这样 怎么办 例如 在代码中 ABAddressBookRef addressBook ABAddressBookCreate CFArrayRef peopleArra
  • iPhone 相当于 Application.DoEvents();

    iPHone 我们使用 MonoTouch 但 Obj C 答案还可以 我的单例域对象需要一段时间才能获取所有数据 因此它在线程中内部运行部分获取数据 我需要通知 UI 域已完成 目前我正在这样做 有没有更好的办法 在 WinForms 中
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • 如何建立辅助NSSortDescriptor排序键?

    我已成功按排序键对数据进行排序lastName 但我想知道如何排序lastName 然后由firstName 这是我用来排序的代码lastName NSSortDescriptor sortDescriptor NSSortDescript

随机推荐

  • WaitAndRetryPolicy 与 BulkheadPolicy 结合,优先重试。是否可以?

    我正在评估Polly https github com App vNext Polly 库的功能和灵活性方面 作为评估过程的一部分 我试图将WaitAndRetryPolicy与BulkheadPolicy政策 以实现弹性和节流的结合 问题
  • 使用 Jackson 解析 Java 中的 JSON 子集

    给定一个 Json 是否可以使用 Jackson 只解析出消息的一部分 假设我感兴趣的数据埋藏在深层的字段层次结构中 并且我根本不关心为每个类创建 DTO 类 给定一个非常简单的场景 我想对 Telephone 类进行建模 而不了解其之前的
  • CUDA 错误:调用 cublasCreate(handle) 时出现 CUBLAS_STATUS_ALLOC_FAILED

    当我在 Google Colab 中运行 PyTorch 深度学习模型时 出现以下错误 usr local lib python3 6 dist packages torch nn functional py in linear input
  • 如何使用 Selenium 和 Python 在信用卡号字段中输入日期?

    我正在尝试制作一个脚本来自动在 Shopify 网站上结帐 当我尝试填写要求信用卡的字段时 硒不允许我将密钥发送到该字段中 并表示该元素不可交互 我已经尝试单击它 但它仍然不允许我输入信息 有人知道该怎么办吗 driver find ele
  • Gradle 与编译器

    据我了解 Gradle 是 Android Studio 的包生成器 它在构建时整理与项目相关的资源 源代码和配置文件 但它也会编译代码吗 或者它将资源和依赖项转换为某种形式的可编译代码 然后将其发送给编译器 从我一直在做的所有阅读来看 这
  • 如何在 Xamarin Android 中使用 ActivityResultContract?

    我试图在 Xamarin 中使用 AndroidX 的 ActivityResultContract 但找不到任何相关文档或信息 我已经在本机android中实现了ActivityResultLauncher ActivityResultC
  • 强制 xml 返回某些 Web api 控制器,同时保持默认 JSON

    我们正在做一些 azure 商店集成 其资源提供程序代码要求我们使用 xml 作为返回格式化程序 然而 我们只想将 XML 与 Azure 内容一起使用 而保留默认的 JSON 格式化程序 那么 有谁知道如何强制特定控制器 方法的 Web
  • 优先队列应用程序

    优先级队列数据结构的计算机应用有哪些 我想了解使用优先级队列的计算机进程或计算机应用程序 我知道一个这样的应用程序 我们可以在打印机缓冲区中使用优先级队列 例如 假设有 3 个优先级 用户在发出打印命令之前需要指定他 她的优先级 因此 缓冲
  • SQL Server:“找不到数据库引擎启动句柄”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 尝试从以下位置安装 SQL Server Express 2016 时 here https dev mysql com download
  • Railsbrakeman命令sql注入

    从参数构造 order 方法时 如何避免 Rails 中出现刹车警告 def index methods name manager deadline assignments Assignment order sort column meth
  • 如何使用 Selenium IDE 测试 jQuery UI 滑块小部件?

    我们正在使用jQuery UI 滑块小部件 http jqueryui com demos slider 在我们的 Web 应用程序中 我们希望使用以下命令自动测试 UI硒集成开发环境 http seleniumhq org project
  • std::min 的参数顺序会更改浮点的编译器输出

    我在编译器资源管理器中摆弄 发现传递给 std min 的参数顺序更改了发出的程序集 这是 Godbolt Compiler Explorer 上的示例 https godbolt org g g g h codeEditor i font
  • sbt和antlr,有简单的例子吗?

    有没有人有如何设置 sbt 来构建 ANTLR 文件 到 scala 然后编译生成的代码的示例 我的文件布局 src main scala Test scala scala test rig src main scala Test g an
  • 未定义功能传感

    我正在尝试使用 GCC 编译器执行此操作 这可能吗 指定一个函数 但该函数如果未实现则指向 NULL 例子 extern void something uint some 如果未实现 则指向 NULL 值 所以可以这样检查 somethin
  • `plot.lm()` 生成的“残差与杠杆”图中的红色实线是什么?

    fit lt lm dist speed cars plot fit which 5 绘图中间的红实线是什么意思 我认为这与库克的距离无关 它是 LOESS 回归线 其中span 2 3 and degree 2 通过针对杠杆平滑标准化残差
  • union 可以模板化吗?

    似乎联合可以在 c 11 中模板化 它们用于例如std Optional 的参考实现 https github com akrzemi1 Optional blob master optional hpp 在 c 11 之前这可能吗 是的
  • 在打字稿中键入具有最大属性数量的动态键

    我想知道是否可以在打字稿中键入对象中动态属性的最大数量 所以基本的例子是跟踪事件 events track SOME EVENT first a other b some c 事件数据应该最多保存 3 个属性及其各自的值 键也可以是动态的
  • 为什么Java虚拟机中没有GIL?为什么 Python 这么需要一个?

    我希望有人能够提供一些关于 Java 虚拟机的根本不同之处的见解 它允许它很好地实现线程 而不需要全局解释器锁 GIL 而 Python 则需要这样的邪恶 Python 语言 不需要 GIL 这就是为什么它可以在 JVM Jython 和
  • 修复 ORA-02273:此唯一/主键被某些外键引用

    尝试删除唯一约束我遇到了这样的错误 ORA 02273 this unique primary key is referenced by some foreign keys 如何查找引用我的唯一约束的外键列表 select from all
  • Objective-C 在函数中返回分配的内存 == 不好?

    这是在 iPhone 上 那么如果我有一个像这样的函数呢 SomeObject buildObject 我是否需要传递一个已经在外部分配的变量 例如 void assignObject SomeObject out 或者我可以做 SomeO