UIImage imageNamed size

时间:2011-12-26 17:37:43

标签: objective-c cocoa-touch uikit uiimage

一般来说是Objective-C,Cocoa和编译语言的新手,请原谅我的无知:

UIImage *myImage = [UIImage imageNamed:@"1-filter.jpg"];
NSLog(@"myImage.size=%@", myImage.size);

结果     线程1:Porgram收到信号:“EXC_BAD_ACCESS”。

为什么呢?如何获得UIImage的大小?

2 个答案:

答案 0 :(得分:4)

大小是一种结构。

使用size.width, size.heightNSStringFromCGSize(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,请阅读有关此答案的评论。