Skip to content

destroy

任务句柄销毁

destroySUDOPGameTask 协议中的核心实例方法。它作为异步任务(如游戏预加载、资源下载、环境初始化等)的“中止开关”,用于在任务不再需要时立即释放相关系统资源。当 App 页面销毁或用户主动取消加载时,调用此方法可以确保后台任务不会继续消耗内存和带宽。


方法声明

objc
/**
 * 取消当前正在进行的任务,并释放与之关联的所有硬件与内存资源。
 * 调用后,该任务实例将进入失效状态。
 */
- (void)destroy;

运行行为

  1. 立即中断:引擎会向底层发送中断信号,停止当前任务的代码逻辑执行及网络 I/O 传输。
  2. 资源回放:触发底层引擎释放已占用的 GPU 纹理、音频缓冲区、文件句柄及内存空间。
  3. 状态失效:一旦调用,该 Task 实例即宣告废弃。后续尝试通过该实例进行的操作将被 SDK 拦截或忽略。
  4. 静默销毁:销毁过程通常不会触发原任务的“成功”回调,但可能会触发包含“被取消”信息的错误回调。

代码示例

在用户离开游戏页面时,确保及时销毁预加载任务以节省性能:

objc
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    
    // 1. 如果预加载任务仍在进行,则立即销毁
    if (self.preloadTask) {
        [self.preloadTask destroy];
        
        // 2. 将句柄置空,防止 ARC 环境下延迟释放
        self.preloadTask = nil;
    }
}

注意事项

  • 内存管理:在调用 destroy 后,务必将持有该对象的属性手动置为 nil。这是确保实例被及时回收的最佳实践,防止因强引用导致内存泄漏。
  • 幂等性:该方法支持多次调用。若任务已经销毁,再次调用 destroy 不会产生副作用或引发崩溃。
  • 独立性destroy 仅针对当前 Task 句柄代表的任务。它不会停止已经运行的游戏实例或影响全局 SDK 的状态。