Objective-C NSThread引用计数约定(保留vs自动释放)
发布时间:2020-12-16 10:16:10 所属栏目:百科 来源:网络整理
导读:我的主程序产生一个线程,执行以下命令: // alloc autorelease pool somewhere beforeNSArray *blah = [NSArray arrayWithObject: @"moo"];[self performSelectorOnMainThread: @selector(boonk:) withObject: blah waitUntilDone: NO];// release autorelea
我的主程序产生一个线程,执行以下命令:
// alloc autorelease pool somewhere before NSArray *blah = [NSArray arrayWithObject: @"moo"]; [self performSelectorOnMainThread: @selector(boonk:) withObject: blah waitUntilDone: NO]; // release autorelease pool somewhere after 现在,这似乎对我来说是错误的,因为自动释放池可以在选择器boonk:完成执行之前释放,这会导致崩溃. 所以,我接下来的自然行动将是: // alloc autorelease pool somewhere before NSArray *blah = [[NSArray alloc] initWithObject: @"moo"]; [self performSelectorOnMainThread: @selector(boonk:) withObject: blah waitUntilDone: NO]; // release autorelease pool somewhere after - (void)boonk: (id)data { // do something with data [data release]; // release the ref count the thread added } 这绝对没有错误,但……似乎不自然.是否有一个objective-c引用计数约定或协议来处理这种情况(交叉线程等待发布),或者是第二种解决方案,它的工作方式是什么? 解决方法
实际上,performSelectorOnMainThread会保留其参数,直到执行选择器之后,因此不需要这样做.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |