NSData Unrecognized selector sent to class

青春壹個敷衍的年華 提交于 2019-12-13 04:17:53

问题


I'm getting the following error when running my app:

+[NSData dataFromBase64String:]: unrecognized selector sent to class 0x1aff66598 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSData dataFromBase64String:]: unrecognized selector sent to class 0x1aff66598'

The caller looks like this:

NSString* decodedData = [self base64Decode:encodedData];

And the method definitions are as follows:

- (NSString *)base64Decode:(NSString *)base64String {
    NSData *plainTextData = [NSData dataFromBase64String:base64String];
    NSString *plainText = [[NSString alloc] initWithData:plainTextData encoding:NSUTF8StringEncoding];
    return plainText;
}

// This is in another class
+ (NSData *)dataFromBase64String:(NSString *)aString {
    NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
    if( data == nil )
        return nil;
    size_t outputLength;
    void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
    NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
    free(outputBuffer);
    return result;
}

I'm not sure what I'm doing wrong...


回答1:


Is your implementation of 'dataFromBase64String:' in objective-C Category in a static framework or library?

If it is the case, methods in the category are not included at linking and so are not found at runtime unless you add flags '-ObjC -all_load' on OTHER_LINKER_FLAGS in Xcode.

see https://developer.apple.com/library/content/qa/qa1490/_index.html



来源:https://stackoverflow.com/questions/46733291/nsdata-unrecognized-selector-sent-to-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!