私はこれで頭を壁にぶつけていました。何かが足りないに違いありません。このコードは、暗号化されたテキストを base64 エンコードした直後に呼び出されます。NSLog署名を呼び出す時点で、常に有効です。ただし、残りの部分がうまく機能する場合もあれば、removePlus または finalSig が null に戻る場合もあります。また、Xcode 4.5、ios6 を使用しており、プロジェクトで ARC を有効にしています。たぶん、私が望む前に何かが自動リリースされているような気がします。誰かに何かアイデアがあれば、どんな助けでも大歓迎です。
// Get the data out of the context
char *outputBuffer;
long outputLength = BIO_get_mem_data(context, &outputBuffer);
NSMutableString *signature = [[NSMutableString alloc] init];
[signature appendString:[NSMutableString stringWithCString:outputBuffer encoding:NSASCIIStringEncoding]];
NSLog(@"Base64 Pre Encoded: %@", signature);
signature = [[signature stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding] mutableCopy];
NSMutableString *removePlus = [[signature stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"] mutableCopy];
NSString *finalSig = [removePlus stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];
//now we create the url request portion
NSMutableString *variables = [[NSMutableString alloc] init];
//set the variables we're going
[variables appendString:finalSig];