필자가 선호하는 Java의 기능 중 하나는 오토 복싱 (autoboxing)으로, 컴파일러가 프리미티브와 래퍼 클래스를 자동으로 변환합니다.intValue를 원할 때 실수로 NSNumber의 포인터를 사용하는 것을 방지하려면 어떻게해야합니까?
Objective-C/Cocoa에서 핵심 데이터 응용 프로그램을 작성 중이며 프로그래밍 방식으로 정수 속성을 처리하는 것이 실망 스럽습니다.
//img is a managed object that I have fetched
NSString* filename = [NSString stringWithFormat:@"image%d.png", [[img valueForKey:@"imageID"] intValue]];
내가 가끔 수행 intValue
메시지를 잊지 일어날 경우, stringWithFormat:
에 전달되는 다음 INT 실제로 포인터 값 : 그 이유는.
문제는 완전히 자동으로 발생한다는 것입니다. 컴파일러 오류 또는 경고는 없습니다. 어리석은 어리석은 일이 문제 일 때 나는 너무 오랫동안 디버깅을 할 때가있다.
프로그래밍 스타일이나 컴파일러 설정을 변경하여 해당 트랩에 걸리지 않도록 할 수 있습니까?
편집 : 위의 예는 문제가 많은 곳 중 하나에 불과하다는 사실에 대해서는 분명하지 않았습니다. 다음은 문자열과 관련이없는 또 다른 가상의 예입니다.
엔터티 CollegeClass
에는 courseNumber
및 enrollmentLimit
의 두 가지 정수 속성이 있습니다. 의 난 코스 번호를 비교하고 싶은 말은하자
//classFoo is a NSManagedObjects I've fetched
if ([[classFoo [email protected]"courseNumber"] intValue] < 400) {
NSLog(@"undergraduate class");
}
또는 유사하게, 나는 CS 부서에서 모든 클래스의 평균 등록 제한을 계산한다고 가정합니다.
이것은 내가 찾고있는 것입니다. 고맙습니다. –