我有这个方法可以从另一个类调用:
-(void)artworkInfo:(NSNumber *)pos{
[image setImage:(UIImage *)[[mainDelegate.mapAnnotations objectAtIndex:(NSUInteger)pos]image]];
[pos release];
}
我在所有三行上都设置了调试器停止点。调试时,在调用方法之后且在调用setImage
之前,将鼠标悬停在方法定义和pos
行中的setImage
上会显示从中发送的正确值方法调用。但是,当我在调试器中前进并且下一行[image setImage...]
在两个pos
显示“超出范围”时悬停时,因此应用程序不会显示应该显示的图像。为什么会这样?
编辑:好吧,似乎我的问题可能只是如何在类中调用该方法,因为即使是硬编码的值也不会在方法中生成图像,但如果我复制并且将该行粘贴到viewDidLoad:
,确实如此。为什么该行在viewDidLoad:
中起作用,而不是在现在的方法中调用它?
答案 0 :(得分:1)
你不应该将作为参数传递的对象释放到方法中,这是不好的做法。并且你不应该将NSNumber对象强制转换为NSUInteger类型。
你可能需要像...这样的东西。
[pos intValue]//This will return the integer value of pos.
答案 1 :(得分:1)
一些观察结果:
答案 2 :(得分:0)
也许mapAnnotations中的图像之前已被释放。我不知道你为什么要释放pos,因为它是一个参数,所以它有一个隐式自动释放。请尝试删除[pos release]