NSThread中的Objective-c循环
我想构建一个可以在线程中运行循环的对象。 当我使用NSThread在线程中运行循环时,有时工作正常,有时出现错误消息:NSThread中的Objective-c循环,objective-c,nsthread,gnustep,Objective C,Nsthread,Gnustep,我想构建一个可以在线程中运行循环的对象。 当我使用NSThread在线程中运行循环时,有时工作正常,有时出现错误消息: Uncaught exception NSInvalidArgumentException, reason: Tried to add nil value for key 'NSArgumentDomain' to dictionary. 我怎么修理它?或NSthread教程可能会有所帮助 #import <Foundation/Foundation.h> @
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;
}
#导入
@接口线程测试:NSObject
-(无效)运行;
-(void)goThread;
@结束
@线程测试的实现
-(无效)运行{
@自动释放池{
int i;
对于(i=1;i<5;i++){
NSLog(@“Bar”);
}
NSLog(“循环结束”);
}
}
-(void)goThread{
[NSThread detachNewThreadSelector:@selector(运行)
目标:自我
withObject:nil];
}
内部主(空){
@自动释放池{
ThreadTest*t=[[ThreadTest alloc]init];
[t goThread];
}
返回0;
}
如果您尝试在字典中插入NIL,它将崩溃。但是,您可以向其插入NSNULL参数
所以只要检查一下对象是否为nil,就可以插入NSNULL
controlObject != nil ? controlObject : [NSNull null];
我不明白,你能解释一下吗?看你的错误日志,我误解了你的问题。例外情况可能是因为这不是线程安全的,多个线程可能试图同时访问该项。关于这一点,这里有很多类似的问题,你应该用好的答案进行搜索。看看这个例子:我想通过制作一个像龟兔赛跑程序这样的比赛游戏来理解objective-c中的线程。它不像java中的线程那样易于使用。我想我需要更多地了解这一点。非常感谢你。