destroy
任务句柄销毁
destroy 是 SUDOPGameTask 协议中的核心实例方法。它作为异步任务(如游戏预加载、资源下载、环境初始化等)的“中止开关”,用于在任务不再需要时立即释放相关系统资源。当 App 页面销毁或用户主动取消加载时,调用此方法可以确保后台任务不会继续消耗内存和带宽。
方法声明
objc
/**
* 取消当前正在进行的任务,并释放与之关联的所有硬件与内存资源。
* 调用后,该任务实例将进入失效状态。
*/
- (void)destroy;运行行为
- 立即中断:引擎会向底层发送中断信号,停止当前任务的代码逻辑执行及网络 I/O 传输。
- 资源回放:触发底层引擎释放已占用的 GPU 纹理、音频缓冲区、文件句柄及内存空间。
- 状态失效:一旦调用,该 Task 实例即宣告废弃。后续尝试通过该实例进行的操作将被 SDK 拦截或忽略。
- 静默销毁:销毁过程通常不会触发原任务的“成功”回调,但可能会触发包含“被取消”信息的错误回调。
代码示例
在用户离开游戏页面时,确保及时销毁预加载任务以节省性能:
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 的状态。