2011-12-26 5 views

답변

4

크기는 구조입니다.

출력이 NSLog 인 경우 size.width, size.height 또는 NSStringFromCGSize(myImage.size)을 사용하십시오.

2

이것은 미묘하고 짜증나는 초보자 용 오류입니다. (실제로 지난 주에 만났습니다.)

NSLog에서 %@ 형식 문자열을 사용하는 경우 인수는 Objective-C 개체 일종의 종류 여야합니다. (뒤에서 NSLog(@"%@", foo)을 할 때 시스템은 [foo description]을 호출하여 출력 할 문자열을 결정합니다 NSLog에 전달하는 변수가 Objective-C 객체가 아니면 시스템은 Objective-C 객체가 아닌 다른 객체로 메시지를 보내려고 시도합니다. 객체를 가져온 다음이 오류를 throw합니다.

이 경우에는 정수를 얻으므로 형식 문자열에서 %@%d으로 대체하면 모든 것이 올바르게 작동합니다.

또한 Eugene이 언급했듯이 size 개체의 일부에 액세스하려고합니다. 이 실제로 대신 %d%f해야,이 대답에 의견을 읽어 보시기 바랍니다 : 그래서

NSLog(@"size.height=%d", myImage.size.height); 

편집을 시도합니다.

+0

NSLog (@ "size.height = % d", myImage.size.height); 실제로 % f는 CGFloat입니다. – Eugene

+1

'CGSize'의 멤버는'CGFloat'이며 NSInteger는 아닙니다. 올바른 포맷터는'% f' 또는'% g' (또는 실제로 과학 표기법을 좋아한다면'% e')입니다. 그리고 너비 나 높이뿐만 아니라 전체 크기를 얻으려면'NSStringFromCGSize'를 사용하는 것이 정확하고 쉽습니다. 객체를 반환하기 때문에'% @'입니다. –