Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 机架空间身份验证_Iphone_Ios_Asihttprequest_Rackspace Cloud - Fatal编程技术网

Iphone 机架空间身份验证

Iphone 机架空间身份验证,iphone,ios,asihttprequest,rackspace-cloud,Iphone,Ios,Asihttprequest,Rackspace Cloud,我正在尝试使用RackSpace API进行身份验证,以使用ASIHttp库获取身份验证令牌 但我的问题是,有时它能正常工作,但大多数时候我都遇到了这种崩溃 libobjc.A.dylib`objc_release: 0x16cd090: pushl %ebp 0x16cd091: movl %esp, %ebp 0x16cd093: subl $8, %esp 0x16cd096: calll 0x16cd09b ; objc_release

我正在尝试使用RackSpace API进行身份验证,以使用ASIHttp库获取身份验证令牌 但我的问题是,有时它能正常工作,但大多数时候我都遇到了这种崩溃

libobjc.A.dylib`objc_release:
0x16cd090:  pushl  %ebp
0x16cd091:  movl   %esp, %ebp
0x16cd093:  subl   $8, %esp
0x16cd096:  calll  0x16cd09b                 ; objc_release + 11
0x16cd09b:  popl   %ecx
0x16cd09c:  movl   8(%ebp), %eax
0x16cd09f:  testl  %eax, %eax
0x16cd0a1:  je     0x16cd0d5                 ; objc_release + 69
0x16cd0a3:  movl   (%eax), %edx
0x16cd0a5:  movl   16(%edx), %edx
0x16cd0a8:  andl   $-4, %edx
0x16cd0ab:  testb  $2, 2(%edx)
0x16cd0af:  je     0x16cd0c5                 ; objc_release + 53
0x16cd0b1:  movl   1002149(%ecx), %ecx
0x16cd0b7:  movl   %ecx, 4(%esp)
0x16cd0bb:  movl   %eax, (%esp)
0x16cd0be:  calll  0x16cc08c                 ; objc_msgSend
0x16cd0c3:  jmp    0x16cd0d5                 ; objc_release + 69
0x16cd0c5:  movl   %eax, (%esp)
0x16cd0c8:  movl   $0, 4(%esp)
0x16cd0d0:  calll  0x16ce9d0                 ; -[NSObject release]
0x16cd0d5:  addl   $8, %esp
0x16cd0d8:  popl   %ebp
0x16cd0d9:  ret
我无法理解到底出了什么问题。请帮我解决这个问题

编辑:

这是我正在使用的代码

+ (void)authenticate
{
    [accessDetailsLock lock];
    ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:RACSPACE_AUTHENTICATE_API]];
    [request addRequestHeader:@"Content-type" value:@"application/json"];

    NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    [dic setObject:RACSPACE_USER_NAME forKey:@"username"];
    [dic setObject:RACSPACE_PASSWORD forKey:@"apiKey"];

    NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] init];
    [dic1 setObject:dic forKey:@"RAX-KSKEY:apiKeyCredentials"];

    NSMutableDictionary *finalDic = [[NSMutableDictionary alloc] init];
    [finalDic setObject:dic1 forKey:@"auth"];

    SBJSON *sbJson= [[SBJSON alloc] init];
    NSString *strJson =[sbJson stringWithObject:finalDic];
    NSLog(@"%@",strJson);
    [request setPostBody:(NSMutableData*)[strJson dataUsingEncoding:NSUTF8StringEncoding]];

    [strJson release];
    [dic release];
    [dic1 release];
    [finalDic release];
    [request startSynchronous];

    if (![request error])
    {
        NSDictionary *responseHeaders = [request responseHeaders];
        NSLog(@"Response%@",[responseHeaders description]);
        NSLog(@"Response 2=%@",[request responseString]);
        SBJSON *parser = [[SBJSON alloc] init];
        NSDictionary *jsonObject = [[parser objectWithString:[request responseString]] objectForKey:@"access"];
        [parser release];

        authToken = [[jsonObject objectForKey:@"token"] objectForKey:@"id"];

        NSArray *services = [jsonObject objectForKey:@"serviceCatalog"];

        for (NSDictionary *service in services)
        {
            if ([[service valueForKey:@"type"] isEqualToString:@"object-store"])
            {
                if ([[service valueForKey:@"name"] isEqualToString:@"cloudFiles"])
                {

                    NSDictionary *endpoint = [[service valueForKey:@"endpoints"] objectAtIndex:0];
                    storageURL = [NSURL URLWithString:[endpoint valueForKey:@"publicURL"]];

                }
            }
            else if([[service valueForKey:@"type"] isEqualToString:@"rax:object-cdn"])
            {
                if ([[service valueForKey:@"name"] isEqualToString:@"cloudFilesCDN"])
                {
                    NSDictionary *endpoint = [[service valueForKey:@"endpoints"] objectAtIndex:0];
                    cdnManagementURL = [NSURL URLWithString:[endpoint valueForKey:@"publicURL"]];

                }
            }
        }
        [request release];
        [accessDetailsLock unlock];
    }

}

从我看到的情况来看,看起来您正在释放一个已经在自动释放池中的对象

请看这一行:

NSString *strJson = [sbJson stringWithObject:finalDic];
[strJson release];
从中可以看出,这将返回一个自动删除的NSString。然后,您将在这一行发布以下内容:

NSString *strJson = [sbJson stringWithObject:finalDic];
[strJson release];
这会导致EXC\u访问错误


我在Rackspace的移动团队工作,所以请告诉我这是否适合您,或者我是否可以以任何其他方式提供帮助。

因为是在释放方法中,我猜您有一个僵尸-释放一个已经释放的对象。你应该发布相关来源,以便我们进一步提供帮助。嗨@Snips。请看一下代码..您好@Mihir,您的rackspace身份验证工作正常吗?你能给我指一下引导你这么做的文档吗?@Jay,你好!我需要开发一个iOS应用程序来访问Rackspace上托管的MySql数据库,而我在知识中心上找不到任何iOS文档。既然你说你是流动队的,你能帮我吗?我的电子邮件是arsalan(at)softack.com。谢谢