[ios]ASIHTTPRequest 的问题

标签: Xcode iphone ios
发布时间: 2017/3/27 18:59:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图使用 wordpress api,但是有未知的问题,我的要求︰ 第一次请求工程的完美,但在第二次它崩溃。我的代码︰

//Response from request, which was before
        NSString *responseString = [request responseString];
        SBJsonParser *jsonParser = [SBJsonParser new];
        NSDictionary *dict = (NSDictionary*)[jsonParser objectWithString:responseString];
        [jsonParser release];
        int count = 10
        int loadingNow = 1;
        while (loadingNow <= count) {
            NSDictionary *currentPostDict = (NSDictionary *)[fullPosts objectAtIndex:(loadingNow - 1)];
            NSString *currentSlug = (NSString *)[currentPostDict objectForKey:@"slug"];
            if (loadingNow == 1) {
                NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.smartfiction.ru/api/get_post/?slug=%@", currentSlug]];
                NSLog(@"url: %@", url);
                ASIHTTPRequest *requestNew = [ASIHTTPRequest requestWithURL:url];
                [requestNew setDelegate:self];
                [requestNew setDidFinishSelector:@selector(requestDidFinishForThreadID:)];
                [requestNew setTag:1];
                [requestNew startAsynchronous];
                [url release];
            }
        }

我的网址看起来像︰ http://www.smartfiction.ru/api/get_post/?slug=best_friend

错误的地方︰ //In ASIHTTPRequest.m NSArray * 饼干 = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: [[自我 url] absoluteURL]];

解决方法 1:

解决方法︰

你应该改掉这条线...

[url release];

发生了什么事?

这里是哪里的问题得到的设置...

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.smartfiction.ru/api/get_post/?slug=%@", currentSlug]];

没什么错误你在这里做了什么。 但是,此方法返回的 autoreleased NSURL。 这意味着,一旦你 url 变量超出范围,它是公平游戏为 autoReleasePool,将其释放在下次应用程序运行时通过它是下一个周期。

当你去和释放它手动与 [url release] ,获取保留计数为零,并很快得到释放。 然后的下次您尝试访问它,它不再是有了,和操作系统关闭你失望。

那么,什么在这里?

如果你创建一个对象通过发送 alloc 消息一类,你"自己"的对象,并负责在适当的时候释放它。 除此之外,当你使用这些类构造函数之一,该对象已 autoreleased,你不是负责释放它。

一般情况下,你应该对每个 allocreleaseautorelease

赞助商