Ios 缺少方法声明的上下文-应用内接收验证控制器

Ios 缺少方法声明的上下文-应用内接收验证控制器,ios,objective-c,Ios,Objective C,应用程序运行正常,但在Xcode 6上,在以下方法上出现错误“缺少方法声明的上下文”: - (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length{ static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; NSMutableData* data = [NSMutabl

应用程序运行正常,但在Xcode 6上,在以下方法上出现错误“缺少方法声明的上下文”:

- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length{
    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
    uint8_t* output = (uint8_t*)data.mutableBytes;
    for (NSInteger i = 0; i < length; i += 3) {
        NSInteger value = 0;
        for (NSInteger j = i; j < (i + 3); j++) {
            value <<= 8;
            if (j < length) {
                value |= (0xFF & input[j]);
            }
        }
        NSInteger index = (i / 3) * 4;
        output[index + 0] =                    table[(value >> 18) & 0x3F];
        output[index + 1] =                    table[(value >> 12) & 0x3F];
        output[index + 2] = (i + 1) < length ? table[(value >> 6)  & 0x3F] : '=';
        output[index + 3] = (i + 2) < length ? table[(value >> 0)  & 0x3F] : '=';
    }
    return [[[NSString alloc] initWithData:data    encoding:NSASCIIStringEncoding] autorelease];
}

// Exact code above @end is : 

/*
- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length
{ 
#warning Replace this method.
return nil;
}


- (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length
{
#warning Replace this method.
return nil;
}

#warning Implement this function.
char* base64_encode(const void* buf, size_t size)
{ return NULL; }

#warning Implement this function.
void * base64_decode(const char* s, size_t * data_len)
{ return NULL; }

*/
@end
-(NSString*)encodeBase64:(const uint8_t*)输入长度:(NSInteger)长度{
静态字符表[]=“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzo123456789+/=”;
NSMutableData*数据=[NSMutableData数据长度:((长度+2)/3)*4];
uint8_t*输出=(uint8_t*)data.mutableBytes;
对于(NSInteger i=0;i>12)&0x3F];
输出[索引+2]=(i+1)>6)和0x3F]:'=';
输出[索引+3]=(i+2)>0)&0x3F]:'=';
}
返回[[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding]autorelease];
}
//@end上面的确切代码是:
/*
-(NSString*)encodeBase64:(const uint8_t*)输入长度:(NSInteger)长度
{ 
#警告:请替换此方法。
返回零;
}
-(NSString*)decodeBase64:(NSString*)输入长度:(NSInteger*)长度
{
#警告:请替换此方法。
返回零;
}
#警告:请执行此功能。
字符*base64_编码(常量无效*buf,大小)
{返回NULL;}
#警告:请执行此功能。
void*base64解码(常量字符*s,大小*数据长度)
{返回NULL;}
*/
@结束
我建议:

a) 仔细检查您的方法是否存在于文件中的@implementation和@end之间

b) 移除

- (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length
{ 
  #warning Replace this method.
  return nil;
}

如果它仍然存在于文件的其他地方(似乎是您在原始帖子中的评论所建议的)?

我也遇到了这个问题。似乎是因为使用Xcode6+,他们不希望您将C/C++代码放在Objective-C上下文中


我将VerificationController中的C/C++代码移到@implementation/@end块之前,然后它就可以编译了。

我在Xcode 6.0.1中也遇到了同样的问题


重新排列类似这样的方法()为我消除了错误(“方法声明缺少上下文”和“@end”必须出现在Objective-C上下文中)。我希望这对您有所帮助。

您将此代码放在哪里?在VerficationController.m(苹果提供的类)中具体在哪里?您能显示文件吗?在
@end
之前?您能显示它之前和之后的内容吗?/*-(NSString)encodeBase64:(const uint8_t*)输入长度:(NSInteger)长度{警告替换此方法。返回nil;}-(NSString*)decodeBase64:(NSString*)输入长度:(NSInteger*)长度{#warning替换此方法。return nil;}#warning实现此函数。char base64_encode(const void*buf,size\t size){return NULL;}#warning实现此函数。void*base64_decode(const char*s,size\t*data_len){return NULL;}*/@end能否更新您的问题(格式)不是在评论中这样做吗?你能发布最终的VerificationController.m代码吗?我试图像你一样重新排列它,但错误仍然存在…ChearShello jeddi,我已经在这里上传了.m文件:太棒了!谢谢。你能不能也发布h文件?我想它与我的不同,因为我有很多错误…谢谢还添加了“UIDevice+IdentifierAddition”在.h文件中引用的类文件:太棒了,非常感谢!但是,当我调用verifyPurchase时,我在下面的代码中遇到了这个错误。我这样做是错误的吗?//错误:verif-contr/MyGame/UpgradeViewController.m:353:15:VerificationController的@interface声明选择器“verifyPurchase:completionHandler:'