objective-c - 为什么ARC下直接派发版本会泄露?(我该如何解决?)
问题描述
我有一段代码需要优化——所以我做了直接调度。直接分派有效(如代码执行,做正确的事并且不会崩溃),但 ARC 不知何故失去了对客户端对象的跟踪,并且它永远不会被释放。标准调度版本也可以工作,并且不会泄漏。如何修复直接调度版本?
标准派送版本:
Client * client;
client = [Client newClientForServerSocket: serverSocket];
直接派送版:
Client * client;
Class clientClass = Client.class;
client = (*IMP_newClientForServerSocket)(clientClass,@selector(newClientForServerSocket:),serverSocket);
(旁注:奇怪的是,如果我将 Client.class 直接粘贴在调度的“self”参数中,调度会崩溃。可能是一个线索。)
解决方案
推荐阅读
- https - 在 python 获取请求时收到 500 内部服务器错误,相同的 url 在浏览器中有效
- node.js - 如何使用 Node 中的原生请求承诺制作带有 XML 正文/内容类型标头的 POST?
- swagger - 从 SwaggerHub 发出 GET 请求时出现“TypeError:无法获取”
- json - 大摇大摆地重新格式化报价
- javascript - 画布绘制图像
- actions-on-google - Google Actions 的部署状态是否已获批准?
- r - Scraping with rvest not working properly
- reactjs - Redux Dom 不刷新
- angular - 正确使用 rxjs-5-to-6-migrate。tsconfig 路径的问题
- php - 来自 Composer 的自动加载器与其他自动加载器发生冲突