gpt4 book ai didi

iphone - 如何取消或停止 NSThread?

转载 作者:可可西里 更新时间:2023-11-01 03:44:43 25 4
gpt4 key购买 nike

我正在开发一个应用程序,它在读取 XML 文件时使用 NSThread 加载 viewControllers 的内容。

我是这样完成的:

-(void)viewDidAppear:(BOOL)animated
{
// Some code...


[NSThread detachNewThreadSelector:@selector(loadXML) toTarget:self withObject:nil];
[super viewDidAppear:YES];
}

-(void)loadXML{

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

// Read XML, create objects...

[pool release];
}

我的问题是,如果用户在加载 NSThread 时更改为另一个 viewController,我不知道如何停止 NSThread,这样做会使应用程序崩溃。

我试过如下取消或退出 NSThread 但没有成功:

-(void)viewsDidDisappear:(BOOL)animated{
[NSThread cancel];
// or [NSThread exit];
[super viewDidDisappear:YES];
}

有人可以帮忙吗?谢谢。

最佳答案

当您分离新线程时,您不能再从 viewDidDisappear 等中取消或退出它。这些 UI 特定方法仅在主线程上执行,因此退出/取消适用于主线程,这显然是错误的。

不使用分离新线程方法,而是在 .h 中声明 NSThread 变量并使用 initWithTarget: selector: object: 方法对其进行初始化,然后随时随地取消它想要..

关于iphone - 如何取消或停止 NSThread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com