簡體   English   中英

NSThread中的Objective-c循環

[英]Objective-c Loop in NSThread

我想建立一個可以在線程中運行循環的對象。 當我使用NSThread在線程中運行循環時,有時工作正常,有時會出現錯誤消息:

Uncaught exception NSInvalidArgumentException, reason: Tried to add nil value for key 'NSArgumentDomain' to dictionary. 

我如何解決它? 或NSthread教程可能會有所幫助。

#import <Foundation/Foundation.h>

@interface ThreadTest: NSObject

-(void) run;

-(void) goThread;

@end


@implementation ThreadTest

-(void) run {

    @autoreleasepool {
        int i;
        for (i = 1; i < 5; i++) {
            NSLog (@"Bar");
        }

        NSLog (@"end of loop");
    }
}

-(void) goThread {
    [NSThread detachNewThreadSelector: @selector(run)
                             toTarget: self
                           withObject: nil];
}


int main(void) {
    @autoreleasepool {
        ThreadTest *t = [[ThreadTest alloc] init];
        [t goThread];
    }

    return 0;
}

如果嘗試向其中插入NIL,則NSDictionary崩潰。 但是,您可以向其插入NSNULL參數。

因此,只需檢查您的對象是否為nil,則插入NSNULL即可。

controlObject != nil ? controlObject : [NSNull null];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM