2010-03-11 4 views
2

작은 FTP 업로드 응용 프로그램을 개발 중입니다. Mac 용 (문제가있는 경우 10.6)NSStream, NSError, 오류 코드

NSStream에 문제가있어 실제로 코드에서 오류를 찾는 방법을 이해할 수 없습니다.

NSError 코드 = 14 도메인 =

(14 개) 수단을 무엇을 확인하는 NSPOSIXErrorDomain

?

감사합니다.

그냥 경우에 여기 내 코드 (I 오류가 왜 어쩌면 당신도 말해 줄 수)

NSString *    filePath; 
NSInputStream *   fStream; 
NSStreamStatus *  status; 
NSError *    error; 


filePath = @"/Users/Vic/Desktop/ftptest.txt"; 
fStream = [NSInputStream inputStreamWithFileAtPath:filePath]; 
[fStream open]; 



uint8_t *   buffer; 

NSInteger bytesRead; 

bytesRead = [fStream read:buffer maxLength:32768]; 

error = [fStream streamError]; 

NSLog(@"error code=%d domain=%@",error.code,error.domain); 
+0

가 나는 문제를 발견했다. 버퍼는 다음과 같이 정의해야합니다. uint8_t buffer [32768]; 아니고 * 버퍼; 어쨌든 공식 사과 예제 (iPhone FTP)에 정의 된 이유는 이상합니다. - 여전히 오류 코드를 확인할 위치를 얻을 수 없습니다. –

+0

코드 문제는 버퍼를 할당하지 않았다는 것입니다. * 수행 한 모든 것은 * buffer라고하는 포인터를 선언하는 것이지만 아무 것도 가리 키지 않습니다. 배열 선언을 사용하면 버퍼가 바이트 배열을 가리 키기 때문에이를 수정합니다. –

답변

2

각 도메인은 다른 장소에 오류 코드가 있지만 Error Handling Guide for Cocoa에서 요약 거기에있다. 거기에 POSIX에 대한 요약도 있습니다. 14는 EFAULT입니다.

기본 시스템 호출을 알고 있으면 오류 코드에 대한 자세한 정보를 얻기 위해 설명서 페이지를 볼 수 있습니다. 이 경우 예를 들어, 터미널에서 man 2 read를 호출 할 수 있으며 상태 :

[EFAULT]   Buf points outside the allocated address space.