一般来说是Objective-C,Cocoa和编译语言的新手,请原谅我的无知:
UIImage *myImage = [UIImage imageNamed:@"1-filter.jpg"];
NSLog(@"myImage.size=%@", myImage.size);
结果 线程1:Porgram收到信号:“EXC_BAD_ACCESS”。
为什么呢?如何获得UIImage的大小?
答案 0 :(得分:4)
大小是一种结构。
使用size.width, size.height
或NSStringFromCGSize(myImage.size)
进行NSLog
输出。
答案 1 :(得分:2)
这是一个微妙的,令人讨厌的初学者错误。 (实际上我上周遇到了这个问题。)
在NSLog中使用格式字符串%@
时,参数必须是某种Objective-C对象。 (在幕后,当您执行NSLog(@"%@", foo)
时,系统调用[foo description]
来确定要输出的字符串。如果传递给NSLog的变量不是Objective-C对象,系统将尝试向不是对象的内容发送消息,然后抛出此错误。)
在这种特殊情况下,您将获得一个整数,因此请在格式字符串中将%@
替换为%d
,以使一切正常。
此外,正如Eugene所提到的,您希望访问size
对象的一部分。所以试试
NSLog(@"size.height=%d", myImage.size.height);
修改:实际上应该是%f
而不是%d
,请阅读有关此答案的评论。