Objective c 使用MD5算法时出错
我正在试着运行这个,我在上面找到的。但我不断发现以下错误:Objective c 使用MD5算法时出错,objective-c,cocoa,macos,md5,Objective C,Cocoa,Macos,Md5,我正在试着运行这个,我在上面找到的。但我不断发现以下错误: 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 'NSInvalidArgumentExce
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];
有什么帮助吗
非常感谢这与您的字符串格式无关。运行时正在查找md5方法,但没有找到它。您是否在TaskController对象的@interface部分定义了它?您是否使用正确数量的参数定义/调用它?阅读异常消息: 您试图向无法识别此类消息的实例发送md5:消息 这就是你试图发送它的地方 正如您在对Wade Williams答案的评论中所揭示的,问题的原因是您将该方法声明并定义为类方法+[TaskController md5:]。请注意,您的声明是如何包含+的,其中异常显示为-;问题在于不匹配
由于您将消息发送到的是TaskController实例,而不是TaskController类,因此解决方案是将声明更改为实例方法-[TaskController md5:],如异常消息所示。另一种解决方案是将其保留为类方法,并更改消息表达式以将消息发送到类,而不是实例哈希=[TaskController md5:str]。谢谢您指出这一点。我刚刚将方法从public切换到private,即从“+”切换到“-”,这就成功了。干得好!+并且-与方法是公共的还是私有的无关。它们确定方法是类方法+还是实例方法-。看见
-[TaskController md5:]: unrecognized selector sent to instance 0x108df0
5 Intel 0x00003143 -[TaskController findFileOrCreateFile] + 709