Ios 缺少方法声明的上下文-应用内接收验证控制器
应用程序运行正常,但在Xcode 6上,在以下方法上出现错误“缺少方法声明的上下文”: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
- (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:'