다음과 같이 CGSize 개체의 값을 기록 (인쇄)하려고했습니다.
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
이 코드에 문제가 있습니까? 제어가 NSLog 문에 오는 동안 내 앱이 충돌합니다.
감사합니다 Prasad
답변:
이 시도
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
형식 sizeOfTab
이 아니기 때문에 충돌이 발생 NSString
합니다.
sizeOfTab
은 객체 가 아니기 때문에 충돌이 발생 합니다 (a뿐만 아니라 모든 객체가 작동 함 NSString
). CGSize
구조체입니다.
self.frame.size.width/tabCount
으로 JoeBlow 언급 ( 내가 입력 한 후 발견이 대답을 서식 ),이 또한 UIKit 기능입니다 NSStringFromCGSize()
꽤 인쇄, 그 역, CGSizeFromString()
하는 생성 CGSize
에서 구조체를NSString
객체입니다.
Apple은 string
매개 변수 를 다음과 같이 문서화합니다 .CGSizeFromString(
string
)
내용이 "{ w , h }" 형식 인 문자열 . 여기서 w 는 너비이고 h 는 높이입니다. w 및 시간 값은 정수 또는 부동 소수점 값이 될 수있다. 유효한 문자열의 예는 @ "{3.0,2.5}"입니다. 문자열이 현지화되지 않았으므로 항목은 항상 쉼표로 구분됩니다.
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Pretty printed size: {320, 568}
% @는 문자열을 삽입하려고 함을 의미합니다. CGSize는 문자열이 아니며 자동으로 하나로 변환 될 수 없습니다. 이것이 앱이 충돌하는 이유입니다. 대신 다음과 같이 개별 속성을 개별적으로 기록해야합니다.
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
width 및 height 속성이 float 유형 이기 때문에 % f가 사용됩니다 .
다른 형식 변환은 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html 문서를 참조하십시오.