【发布时间】:2015-06-29 21:29:31
【问题描述】:
NSString+sha1.h的内容:
#include <CommonCrypto/CommonDigest.h>
#include <Foundation/Foundation.h>
@interface NSString (sha1)
- (NSString *) sha1;
@end
NSString+sha1.m的内容:
#include "NSString+sha1.h"
@implementation NSString (sha1)
- (NSString *) sha1 {
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:input.length];
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
CC_SHA1(data.bytes, data.length, digest);
NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return [NSString stringWithString:output];
}
@end
UIImage+RenderBatteryImage.m的内容:
#include "UIImage+RenderBatteryImage.h"
#include "NSString+sha1.h"
[...]
[@"A string (but not this one)" sha1]
当第三个文件的代码运行时,我得到这个错误:
-[__NSCFString sha1]: unrecognized selector sent to instance 0x12ee1caf0
这是什么原因造成的?我可以确认我的任何源文件中都没有大写 SHA1 实例。
【问题讨论】:
-
那么,异常回溯说这个引用发生在哪里???
-
(您正在将一个 NSString 传递给某个接口,该接口需要一个具有
SHA1方法的对象。传递正确的对象。) -
这应该被编译器捕获。尝试清理和构建或分析以查看是否找到任何东西。
-
崩溃日志:ghostbin.com/paste/49osr。系统日志:ghostbin.com/paste/nw9gy.
标签: ios objective-c theos