0
Я хочу построить объект, который может запускать цикл в потоке. Когда я запускаю цикл в потоке с помощью NSThread, иногда работает нормально, и иногда появляются сообщения об ошибке:Objective-c Loop в 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;
}
Я не понимаю, не могли бы вы объяснить это? – Sam
Я неправильно понял ваш вопрос, глядя на ваш журнал ошибок. Исключение, вероятно, происходит, поскольку это не является потокобезопасным, несколько потоков могут пытаться получить доступ к элементу одновременно. Здесь есть несколько похожих вопросов, которые вы должны искать с хорошими ответами. посмотрите на это, например: http://stackoverflow.com/questions/12091212/understanding-nsrunloop –
Я хочу понять поток в объективе-c, создав гоночную игру, такую как черепаха и программа для кроликов. Это не просто как поток в java, который прост в использовании. Думаю, мне нужно больше узнать об этом. Большое спасибо. – Sam