iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 发送消息时自我保留大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
TestObj类是一个简单的类,它有一个方法doSomethingInBACkground,我在其中发送performSELEctorInBACkground方法,使自己在后台线程中休眠5秒.

@implementation TestObj

- (void)dealloc
{
    NSLog(@"%@,is main thread %u",NSStringFromSELEctor(_cmd),[NSThread ismainThread]) ;
}

- (void)doSomethingInBACkground
{
    [self performSELEctorInBACkground:@SELEctor(BACkgroundWork) withObject:nil] ;
}

- (void)BACkgroundWork
{
    sleep(5) ;
}

@end

我分配并初始化实例并向其发送doSomethingInBACkground消息并为其分配nil以便尽快释放它.

TestObj *obj = [[TestObj alloc] init] ;
[obj doSomethingInBACkground] ;
obj = nil ;

我发现dealloc将在大约5秒后运行obj = nil;,当发送方法时,系统似乎保留self [self performSELEctorInBACkground:@SELEctor(BACkgroundWork)withObject:nil];并在BACkgroundWork返回后,实例将被释放.

任何人都可以告诉我系统背后的工作.谢谢.

解决方法

– [NSObject performSELEctorInBACkground:withObject:]在引擎下调用 – [NSThread initWithTarget:SELEctor:object:]它保留了原始接收者(此处作为目标参数传递)

NSThread文档:“在分离线程执行期间保留对象target和argument.它们在线程最终退出时释放.”

@H_489_27@

大佬总结

以上是大佬教程为你收集整理的ios – 发送消息时自我保留全部内容,希望文章能够帮你解决ios – 发送消息时自我保留所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。