缺少方法声明的上下文 - 应用内收据verificationController

时间:2014-09-16 13:21:13

标签: ios objective-c

应用程序运行正常,但在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

3 个答案:

答案 0 :(得分:11)

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

我将VerificationController中的C / C ++代码移到了@implementation / @end块之前,之后编译得很好。

答案 1 :(得分:1)

我建议:

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

b)删除

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

如果它仍然存在于文件的其他位置(似乎是您在原帖中的评论建议)?

答案 2 :(得分:1)

我也遇到了与Xcode 6.0.1相同的问题。

重新排列这样的方法(http://i.imgur.com/5TH6OaV.png)会使错误无效(&#34;方法声明的缺失上下文&#34;&#34;&#39; @ end&#39;必须出现在目标中-C环境&#34;)对我来说。我希望它可以帮助你。