Objective-C:如何为异步方法正确使用内存管理

2023-12-22

我需要调用一个启动一些异步代码的方法

MyClass* myClass = [[MyClass alloc] init];
[myClass startAsynchronousCode];

现在我不能简单地释放它,因为这会导致错误,因为代码仍在运行:

[myClass release];  // causes an error

处理记忆的最佳方法是什么?


您可以让 -[MyClass startAsynchronousCode] 调用回调:

typedef void(*DoneCallback)(void *);

-(void) startAsynchronousCode {
  // Lots of stuff
  if (finishedCallback) {
    finishedCallback(self);
  }
}

然后实例化一个 MyClass,如下所示:

MyClass *myClass = [[MyClass alloc] initWith: myCallback];

myCallback 可能如下所示:

void myCallback(void *userInfo) {
  MyClass *thing = (MyClass *)userInfo;
  // Do stuff
  [thing release];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C:如何为异步方法正确使用内存管理 的相关文章

  • 将小箭头添加到 iPhone TableView 单元格中单元格的右侧

    这应该很简单 我有一个带有 TableView 的 iPhone 应用程序 如何将经典的小箭头添加到每个单元格的右侧 只需设置相应的附件类型的财产UITableViewCell cell accessoryType UITableViewC
  • _ 和 self 之间的区别。在 Objective-C 中

    使用下划线和使用selfObjective C 中调用时的关键字 property 财产申报 property weak nonatomic NSString myString Calling synthesize关于物业 synthesi
  • 错误域=NSURLErrorDomain代码=-1017“该操作无法

    我刚刚开始 ios 开发 我正在尝试与我的 api 交换数据 当我执行 POST 请求时 一切正常 但当我尝试执行 GET 请求时 出现以下错误 错误域 NSURLErrorDomain代码 1017 该操作无法 完全的 NSURLErro
  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 如何将 UIPopoverPresentationController 的高度设置为与 UITableView 相同

    我在我的应用程序上使用 UIPopoverPresentationController 在我的 iPhone 上显示弹出窗口 使用 UIModalPresentationNone 我希望尺寸随着 UITableView 的高度而动态变化 但
  • iPad 2 检测

    由于我没有 iPad 2 因此我需要知道调用 UIDevice currentDevice model 时它返回什么 我以为它只返回 iPad 但看来我错了 有人可以告诉我吗 Thanks 检查是否有带摄像头的 iPad BOOL isIP
  • 从视频生成缩略图 - ios7

    我用这个作为参考 从视频 URL 或 iPhone SDK 中的数据获取缩略图 https stackoverflow com a 6027285 1145339 该方法使用 MPMoviePlayerController 类而不是 AVF
  • -all_load 其他链接器标志导致第 3 方框架中的重复符号错误

    我有一个用于内部应用程序的静态库 其中包含一些常见的实用程序代码 从以前的 SO 帖子中 我发现为了在运行时加载静态库中的类别 我需要包括 all load ObjC在 构建设置 中的 其他链接器标志 字段中 但是 对于我也在使用的闭源第三
  • 在完成块中保留循环

    在我的课堂上 我创建了这个方法 void refreshDatasourceWithSuccess CreateDataSourceSuccessBlock successBlock failure CreateDataSourceFail
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • NSCFData isRessized 崩溃?

    我目前在控制台中收到此崩溃日志 2011 08 23 19 18 40 064 App 1697 707 NSCFData isResizable unrecognized selector sent to instance 0x11f1c
  • 生成具有固定数字长度的随机数?

    我正在生成随机数 int randomID arc4random 3000 但我想生成至少 4 位数字的随机数 如 1000 2400 1122 我想知道 Objective C 的代码 请尝试 生成数字 1000 9999 int ran
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • iOS:生成pdf时绘制文本时如何设置字体?

    我在ios应用程序中使用drawpdf函数生成pdf 同时调用nsobject类中的drawtext函数 它根据我指定的框架和字符串清楚地绘制文本 我的代码是 void drawText NSString textToDraw inFram
  • TableViewController 的 viewDidLoad 未触发

    我一直在关注这个tutorial http www appcoda com ios programming sidebar navigation menu 有一个滑出式菜单 我添加了一个 TableViewController 它将显示文章
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 如何为 UIImageView 随机化器实现滑动手势

    我一直在浏览大量的教程和问题 但似乎找不到我要找的东西 我有一种感觉 我只是错过了一个简单的步骤 我仍在学习诀窍 所以请承受和我一起做这个 我正在 xcode 4 3 3 上制作图像随机化器 并且我已经能够使用按钮来随机化图像 但我希望它能
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S

随机推荐

  • ZMQ套接字连接超时

    我正在使用 ZMQ cppzmq 的 C 绑定 并且尝试使用以下命令设置 TCP 套接字的连接超时 setsockopt 这样的方法 int connectTimeout 1000 socket setsockopt ZMQ CONNECT
  • 替换对shared_ptr中对象的所有引用

    是否可以替换shared ptr的多个实例引用的对象 可能我不太清楚 我举个例子 shared ptr a new Derived1 auto b a auto c b This function replaces the object w
  • TypeError 对象不可迭代

    当尝试循环 Django 模板中的变量时 出现以下错误 有问题的变量是我的 DetailView 子类中指定的模型的相关对象 类型错误位于 en applicants 50771459778 Householdmember 对象不可迭代 这
  • 如何在 PHP 中通过 cURL 发送 XML 和其他 post 参数

    我使用下面的代码将 XML 发送到我的 REST API xml string data 包含正确的 XML 并且它很好地传递到 mypi php set POST variables url http www server cu mypi
  • 解释器关闭时线程化导入

    蟒蛇的threading文档 http docs python org dev library threading html importing in threaded code states 所有导入尝试必须在解释器启动之前完成 自行关闭
  • 线程最佳实践

    我从事的许多项目的线程实现都很差 而我就是必须追踪这些问题的傻瓜 是否有公认的最佳方法来处理线程 我的代码总是等待一个永远不会触发的事件 我有点像设计模式之类的想法 假设 NET 类似的事情也适用于其他平台 嗯 有lots需要考虑的事情 我
  • 如何检测脚本中的Python版本2或3?

    我编写了一些脚本 它们要么仅在 Python 2 x 版本上运行 要么仅在 Python 3 x 版本上运行 如果脚本是从合适的 Python 版本开始的 我如何检测脚本内部 有没有类似这样的命令 major minor getPython
  • 为什么 MPI_Barrier 会导致 C++ 中的分段错误

    我已将程序简化为以下示例 include
  • 在 Drupal 8 中的特定节点类型上使用预处理钩子

    我已经成功使用预处理页面挂钩 例如 function mytheme preprocess page node front variables and function mytheme preprocess page node 12 var
  • 如何在 foreachBatch 中使用临时表?

    我们正在构建一个流平台 其中批量使用 SQL 至关重要 val query streamingDataSet writeStream option checkpointLocation checkPointLocation foreachB
  • 从具有复合主键的另一个表插入或更新表

    我正在寻找正确的语法和方法来直接从 SQL 执行以下操作 插入或更新 如果数据已存在 TableMain从包含的数据TableA两者具有相同的复合主键 两个表都定义为 CREATE TABLE TableA TID0 int NOT NUL
  • 如何使用 Moya Swift 使用多部分请求上传图像?

    我使用的是 Moya 10 0 1 当我尝试将图像上传到服务器时遇到问题 我确实遵循了分段上传示例 https github com Moya Moya blob master docs Examples MultipartUpload m
  • 条件运算符无法解析重载的成员函数指针

    我在处理 C 中重载成员函数的指针时遇到了一个小问题 以下代码可以正常编译 class Foo public float X const void X const float x float Y const void Y const flo
  • -webkit-filter:其他浏览器的阴影

    我有一个使用以下 css 应用的投影效果 webkit filter drop shadow 0 1px 10px rgba 113 158 206 0 8 有谁知道其他浏览器的等效项是什么 请注意我无法使用box shadow 0 1px
  • Android - 如何发送崩溃报告?

    似乎从 Android 2 2 开始 有一个用于发送崩溃报告的新功能 如链接中所述 http www androidcentral com new android app crash report tool already and runn
  • 阅读《Java 并发实践》以获取更多并发示例?

    SO 的许多人建议通过阅读来深入了解 Java 并发性Java 并发实践 JCIP https rads stackoverflow com amzn click com 0321349601 有时道格 李 Doug Lea 1999 年出
  • 预授权在控制器上不起作用

    我试图在方法级别定义访问规则 但它不起作用 安全配置 Configuration EnableWebSecurity EnableGlobalMethodSecurity prePostEnabled true public class S
  • 仅客户端与 Meteor 的反应?

    我在服务器上发布了一个集合 并在客户端上自动订阅 我想在会话上设置 选定 项目 并更新模板以仅显示选定项目 但似乎这只能通过往返服务器来完成 这是完全没有必要的 Common var Missions new Meteor Collecti
  • 有没有办法在 PHP 中检查 cookie 是否为 httponly

    有没有办法检查 cookie 是否是 httponly 在 php 中 我认为这是不可能的 因为此信息不包含在浏览器发送的原始标头中 事实上 将这样的标志发送回服务器是没有意义的 因为它们对服务器来说没有意义 只会浪费带宽
  • Objective-C:如何为异步方法正确使用内存管理

    我需要调用一个启动一些异步代码的方法 MyClass myClass MyClass alloc init myClass startAsynchronousCode 现在我不能简单地释放它 因为这会导致错误 因为代码仍在运行 myClas