Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用MD5算法时出错_Objective C_Cocoa_Macos_Md5 - Fatal编程技术网

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