iOS无法在扩展类中找到方法

时间:2012-01-27 22:19:10

标签: iphone objective-c ios subclassing

我正在使用Unique Identifier extension of UIDevice,因为旧的uniqueIdentifier已被弃用。我很确定它几天前就有效了。现在,当它在代码[[UIDevice currentDevice] uniqueDeviceIdentifier]中运行时,它会返回运行时错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDevice uniqueDeviceIdentifier]: unrecognized selector sent to instance 0x8370a90

我已将#import "UIDevice+IdentifierAddition.h"所需的添加内容导入到UIDevice中。我也尝试过使用其他扩展类,它也不适用于那些。我尝试在模拟器和iPhone上运行,两者都有相同的结果。但是,当我在它提供的示例项目中使用这些添加时,它可以工作。

有什么想法吗?是否有可能以某种方式禁用了子类化cocoa类?

1 个答案:

答案 0 :(得分:1)

您确定您的项目包含该导入文件的正确版本吗?有时当您从其他地方下载代码并将其添加到项目中时,您不会执行实际的副本,并且在某些时候您的源代码控制会混淆并使用错误的版本。

转到项目导航器中的NSString + MD5Additions.m文件,右键单击,在Finder中显示。然后看一下这个内容并确保它是正确的。

此外,转到项目,构建阶段,编译源代码,查找文件,鼠标右键和在Finder中显示。确保这与项目中的文件相同,并且声明了正确的方法。