request send get error: [выпуск CFString]: сообщение отправлено освобожденному экземпляру 0x6a83e00 - PullRequest
2 голосов
/ 20 октября 2011

Я хочу проверить версию приложения от Apple, поэтому отправляю запрос как показано ниже

- (void)connectToCheckVersion{
NSString *url = @"http://itunes.apple.com/lookup?id=466424846";
TTURLRequest *_request = [TTURLRequest requestWithURL:url delegate:self];
_request.httpMethod = @"GET";
_request.cachePolicy = TTURLRequestCachePolicyNone;
_request.shouldHandleCookies = NO;
TTURLJSONResponse* response = [[TTURLJSONResponse alloc] init];
_request.response = response;
TT_RELEASE_SAFELY(response); 
[_request send];
}


- (void)requestDidFinishLoad:(TTURLRequest*)request {
    TTURLJSONResponse* response = request.response;
    NSDictionary* json = response.rootObject;

    NSArray *results = [json objectForKey:@"results"];
    NSString *version;
    for (NSDictionary *rawResult in results) {

        version = [rawResult objectForKey:@"version"];
    }
    NSString *currentVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
    if (version != nil && currentVersion != nil && ![version isEqualToString:currentVersion]) {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"info" 
                                                        message:@"newer version" 
                                                       delegate:self 
                                              cancelButtonTitle:@"ok"
                                              otherButtonTitles:nil, nil];
        [alert show];
        [alert release];

    }

}

и после [_request send]; получит [выпуск CFString]: сообщение отправлено освобожденному экземпляру 0x6a83e00. Я проверил все строки в этом методе, кажется, они в порядке, и я все еще могу получить правильный ответ от удаленного.

Если я закомментирую этот метод connectToCheckVersion, то никаких проблем не возникнет. Любая умирает?

1 Ответ

1 голос
/ 20 октября 2011

Я думаю, что вы должны сохранить переменную _request и сохранить ее как член.Потому что он будет автоматически освобождаться после возврата функции.

Вы должны отменить его после того, как запрос будет выполнен или не выполнен.

Спасибо.

...