예기치 않은 상황이 발생하면 응용 프로그램이 빠르게 실패하고 크래시 로그에서 의미있는 메시지와 충돌하여 내 iPhone 응용 프로그램 전체에 NSAssert
을 사용하려고합니다.스레드의 NSAssert 사용
NSAssert
이 기본 스레드 인 경우 NSInternalInconsistencyException
가 발생하여 실행이 중지되고 정상적으로 실행되면 정상적으로 작동합니다. 그러나 백그라운드 스레드에서 처리를하고 있는데이 경우 NSAssert
은 스레드를 중단하고 프로그래밍은 계속 실행됩니다.
- (void)main {
@try {
int x = 14;
...
NSAssert1(x > 20, @"x should be greater than 20, was %d", x);
...
}
@catch (NSException *e) {
[e performSelectorOnMainThread:@selector(raise) withObject:nil waitUntilDone:YES];
}
}
이 더 나은 방법이 있나요 :
나의 현재 솔루션 (NSOperation
의 main
방법이 경우에) 잡아 주 스레드에서 예외를 다시 발생하는 것입니다? 아마도 사용자 지정 NSAssertionHandler를 사용하고 있을까요?
는 난 그냥 정적 주석 C의 assert
를 사용할 수 있습니다 알고
assert(x > 20 && "x should be greater than 20");
하지만이 날 x
의 실제 실패 값이 무엇인지 보여 허용하지 않습니다.
동일한 문제가 발생하지만 제안 된 솔루션이 나를 위해 작동하지 않습니다. NSAssert가 실행 중이며 스레드는 종료되지만 응용 프로그램은 계속 실행됩니다. Cocos2D 엔진을 사용하고 있습니다. 누구보다 완벽한 솔루션을 제공 할 수 있습니까? –