簡體   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