什么是[__NSCFString base64String]:无法识别的选择器发送到实例?

时间:2015-07-22 07:22:03

标签: ios objective-c

[__NSCFString base64String]: unrecognized selector sent to instance occurred尝试开发推送通知时。 这是整个错误日志。

-[__NSCFString base64String]: unrecognized selector sent to instance 0x165263e0
2015-07-22 15:52:20.441 xxxx[1623:362933] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString base64String]: unrecognized selector sent to instance 0x165263e0'
*** First throw call stack:
(0x22705fef 0x30da9c8b 0x2270b409 0x22709327 0x22638e78 0x1caa99 0x1c4ba7 0x1bf7ed 0x1bf633 0x1af1d9 0x1ae757 0x1bec3f 0x1c64ed 0x13fdfd 0x260ea37b 0x260eb22d 0x2717d8f3 0x226cb7cb 0x226cb767 0x226c9d69 0x22616201 0x22616013 0x2a0e7201 0x25de2a09 0x145965 0x3135baaf)
libc++abi.dylib: terminating with uncaught exception of type NSException

以下是来源。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    [xxxx startSDKWithAppKey:@"xxxxxxxxxxxxxxxxxxxxxxxxxxxx" host:nil logEnabled:YES sandboxEnabled:NO];

    [xxxx setDelegate:self];
    [xxxx setSPTag:@"xxxx App"];

    [xxxx handleApplication:application didFinishLaunchingWithOptions:launchOptions];

    application.applicationIconBadgeNumber = 0;

    return YES;
}

#pragma mark APNS notification
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{

 [xxxx handleApplication:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];

}

消除这些部分很好。

[xxxx handleApplication:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];

为什么不知道是否发生此错误。 请告诉我应该怎么做......

2 个答案:

答案 0 :(得分:1)

无法识别的选择器已发送通常在您调用特定方法&你的代码中没有。

尝试下面的事情,

  • 尝试在代码中找到base64String方法。
  • 添加异常断点&然后运行你的代码。
  • 另请参阅是否在适当的对象上调用base64String

希望它对你有所帮助。

答案 1 :(得分:1)

我认为您已经添加了类别标题文件NSString+Base64.hNSData+Base64.h,但您没有链接相应的实现(.m)文件。

NSString+Base64.mNSData+Base64.m添加到Xcode目标,这可能很好地解决您的问题。

但是,如果这些实现对象文件是库的一部分,那么您可能需要将-ObjC添加到其他链接器标志