0
스레드에서 루프를 실행할 수있는 개체를 만들고 싶습니다. 내가 NSThread를 사용하여 스레드에서 루프를 실행, 때로는 잘 작동하고 때로는 오류 메시지가 나타납니다Objective-c Loop in 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