我正在尝试运行 MD5 algorithm,我在 this post on stackoverflow 找到了这个{{3}}。但我继续收到以下错误:
2010-08-06 14:45:40.971 Intel[3195:a0f] -[TaskController md5:]: unrecognized selector sent to instance 0x108df0
2010-08-06 14:45:40.973 Intel[3195:a0f] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TaskController md5:]: unrecognized selector sent to instance 0x108df0'
*** Call stack at first throw:
(
0 CoreFoundation 0x9875abba __raiseError + 410
1 libobjc.A.dylib 0x96a3a509 objc_exception_throw + 56
2 CoreFoundation 0x987a78db -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x987017e6 ___forwarding___ + 950
4 CoreFoundation 0x987013b2 _CF_forwarding_prep_0 + 50
5 Intel 0x00003143 -[TaskController findFileOrCreateFile] + 709
6 Intel 0x00002d29 -[TaskController init] + 92
7 Intel 0x00002c03 main + 128
8 Intel 0x00002a6a start + 54
)
我虽然可能与我的字符串是UTF-8有关,但我尝试输入以下字符串仍然会出错:
NSString *foo = @"your text here";
const char *bar = [foo UTF8String];
有任何帮助吗?
非常感谢
答案 0 :(得分:2)
它与您的字符串格式无关。运行时正在寻找你的md5方法而不是找到它。您是否在TaskController对象的@interface部分中定义了它?您是否使用正确数量的参数定义/调用它?
答案 1 :(得分:0)
阅读异常消息:
-[TaskController md5:]: unrecognized selector sent to instance 0x108df0
您尝试向无法识别此类消息的实例发送md5:
消息。
5 Intel 0x00003143 -[TaskController findFileOrCreateFile] + 709
这就是你试图发送它的地方。
正如你在韦德威廉姆斯回答的评论中所揭示的那样,问题的原因是你已经宣布并将方法定义为一种类方法(+[TaskController md5:]
)。请注意您的声明如何具有+,其中异常显示 - ;问题是不匹配。
由于您是将消息发送到TaskController实例而不是TaskController类,因此解决方案是将并将声明更改为实例方法(-[TaskController md5:]
,就像异常消息所示)。另一种解决方案是将其作为类方法保留,并更改消息表达式以将消息发送到类而不是实例(hash = [TaskController md5:str]
)。