다음 코드를 사용할 때 Program received signal: “EXC_BAD_ACCESS”.
이 표시됩니다.Objective-C - 프로그램 수신 신호 : "EXC_BAD_ACCESS". with (NSNumber floatValue)
searchResultFileSize
은 내 인터페이스에 NSNumber
으로 선언되어 있습니다. 나는 그것을 설정할 속성이 확실하지 않았습니다. 현재 내가 가지고있다 :
@property (nonatomic, readonly) NSNumber *searchResultFileSize;
이것은 바르다? 다음 줄에 오류가 표시됩니다.
NSLog(@"float filesize: %f", [searchResultFileSize floatValue]); //Program received signal: “EXC_BAD_ACCESS”.
HUD.progress = [resourceLength floatValue]/[searchResultFileSize floatValue]; //Program received signal: “EXC_BAD_ACCESS”.
내가 첫 줄을 주석 처리하면 두 번째 줄에서 여전히 명백하게 실패합니다. 어떤 아이디어가 문제 일 수 있겠습니까? 아마도 내 전환이 잘못되었을 수 있습니다. 저는 여기에이 코드 조각을 사용하고있는 두 가지 방법은 다음과 같습니다
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
searchResultFileSize = [NSNumber numberWithLongLong:[response expectedContentLength]];
NSLog(@"Float filesize: %f", searchResultFileSize);
if ([searchResultFileSize intValue] != NSURLResponseUnknownLength) {
HUD.mode = MBProgressHUDModeDeterminate;
HUD.labelText = @"Getting Results";
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[responseData length]];
NSLog(@"resourceData length: %d", [resourceLength intValue]);
NSLog(@"filesize: %d", searchResultFileSize);
NSLog(@"float filesize: %f", [searchResultFileSize floatValue]); //Program received signal: “EXC_BAD_ACCESS”.
// HUD.progress is a float
HUD.progress = [resourceLength floatValue]/[searchResultFileSize floatValue]; //Program received signal: “EXC_BAD_ACCESS”.
NSLog(@"progress: %f", [resourceLength floatValue]/[searchResultFileSize floatValue]);
}
또는,'NSLog을 (@ "파일 크기 : % @ ", searchResultFileSize); ' –
.. 그리고 HUD 진행에 관한 부분은 어떨까요? – fuzz
Jacob의 reco에 따라 NSNumber를 그대로 유지하면 문제가 없습니다. – Rog