iphone os 5 - 无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】iphone os 5 - 无法识别的选择器发送到实例【英文标题】:iphone os 5 - unrecognized selector sent to instance 【发布时间】:2014-01-15 02:11:24 【问题描述】:

我有一个错误。

UIImage *img = [[UIImage imageNamed:@"bg_message.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(47, 32, 47, 32) resizingMode:UIImageResizingModeStretch];


UIImage *img = [[UIImage imageNamed:@"bg_message.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(47, 32, 47, 32) resizingMode:UIImageResizingModeStretch];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:frame];
[imgView setImage:img];
[imgView setTag:99999999];
[self.view addSubview:imgView];

只要满足 os 5,os 6 和 7 就通过了。

//This is the error message

* 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[UIImage resizableImageWithCapInsets:resizingMode:]:无法识别的选择器发送到实例 0xd86c2c0'

我不明白。 请任何人帮助我! 非常感谢!

【问题讨论】:

【参考方案1】:

-[UIImage resizableImageWithCapInsets:resizingMode:]仅适用于或之后的ios 6.(参考:Link) P>

如果您构建的应用程序在新的Xcode这个API,它会告诉你没有警告或错误。但是,当你在运行iOS 5的设备的应用程序,它会抛出无法识别的选择异常。这是很难赶上这样的错误。因此,要测试的最佳方式是的IOS 5模拟器/设备上运行。 P>

这是一个很好的做法太查找文档。苹果写的文档很好。您还可以通过阅读它学到很多东西。 P>

【讨论】:

【参考方案2】:

只有在 ios6 中才添加了带有 resizingMode 的变体。如果你也想在 ios5 下运行,你必须检查该方法是否可用。

【讨论】:

当然 - 只需放入一个 if 语句来决定 UIImage 是否支持该方法 - 所以类似于: if ([UIImage instancesRespondToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) 调整大小 else 做点别的

以上是关于iphone os 5 - 无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:“无法识别的选择器已发送到实例”错误

-[UITableViewCell setLayoutMargins:]:无法识别的选择器发送到 iphone 4 中的实例错误

iPhone 应用程序崩溃 [__NSCFString objectForKey:] 无法识别的选择器发送到实例

将 NSMutableArray 加载到 iPhone 的表视图中时无法识别的选择器

无法识别的选择器发送到实例(使用 UIBarButtonItem)

链接静态库时将无法识别的选择器发送到实例?