首页 > 解决方案 > 为什么ARC下直接派发版本会泄露?(我该如何解决?)

问题描述

我有一段代码需要优化——所以我做了直接调度。直接分派有效(如代码执行,做正确的事并且不会崩溃),但 ARC 不知何故失去了对客户端对象的跟踪,并且它永远不会被释放。标准调度版本也可以工作,并且不会泄漏。如何修复直接调度版本?

标准派送版本:

     Client * client;
     client = [Client newClientForServerSocket: serverSocket];

直接派送版:

     Client * client;
     Class clientClass = Client.class;
     client = (*IMP_newClientForServerSocket)(clientClass,@selector(newClientForServerSocket:),serverSocket);

(旁注:奇怪的是,如果我将 Client.class 直接粘贴在调度的“self”参数中,调度会崩溃。可能是一个线索。)

标签: objective-cautomatic-ref-countingselector

解决方案



推荐阅读