Objective-c 在 NSThread 中循环
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];
我想构建一个可以 运行 在线程中循环的对象。 当我 运行 使用 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];