我试图像这样记录(打印)CGSize对象的值:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",sizeOfTab);
这段代码有什么问题吗?当控件进入NSLog语句时,我的应用程序崩溃了。
谢谢普拉萨德
Answers:
试试这个
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是高度。的瓦特和ħ值可以是整数或浮点值。有效字符串的示例是@“ {3.0,2.5}”。该字符串未本地化,因此项目始终以逗号分隔。
CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
Pretty printed size: {320, 568}
%@表示您正在尝试插入字符串。CGSize不是字符串,不能自动转换为1。这就是您的应用程序崩溃的原因。相反,您需要分别记录各个属性,例如
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
使用%f是因为width和height属性属于float类型。
有关其他格式的转换,请参阅文档:http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html