繁体   English   中英

这是Objective-C中NSThread可接受的习惯用法吗?

[英]Is this an acceptable idiom for NSThread in Objective-C?

我有一个基于代理的小型建模框架,正在作为项目的一部分进行编写。 不同的代理都在各自的线程中运行,主管类控制其生命周期。 因此主管类可以取消这些线程。 我知道,有一个isCancelled的方法NSThread 使用以下习语是可以接受的:

#import <Foundation/Foundation.h>
#import "BugThread.h"
#import "Bug.h"

@implementation BugThread

- (id) initWithBug: (Bug*) aBug {

    if((self = [super init])) {
        [bug autorelease];
        bug = [aBug retain];
    }

    return self;
}

- (void) main {

    GSRegisterCurrentThread();

    while(![self isCancelled]) {
        //bug does its stuff
    }
}

我会这么说,因为这在docs中有明确说明:

如果您的线程支持取消,则应定期调用此方法,并在返回YES时退出。

但我建议您看看NSOperationNSOperationQueue 它们旨在允许这种并发,同时代表您管理实际线程。 请参见并发编程指南中的“操作队列”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM