-1

如何强制自动释放池释放我在自动释放池之外创建的自动释放对象 {}

我使用的代码

- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {

    NSError *error = nil;
    id response = [NSJSONSerialization JSONObjectWithData:responseData options:nil error:&error];
    [responseData release];
    if (error) {
            NSLog(@"ERROR JSON PARSING : %@", error.localizedDescription);
    }

    [delegate databaseUpdates:response connection:self];
}

- (void)databaseUpdates:(id)_updates connection:(URLConnection *)_urlConnection {
    if (_updates) {

        NSDictionary *updates = nil;
        @autoreleasepool {

            updates = [[_updates valueForKey:@"objects"] retain];

            //Release _updates here!?!
        }
    }
}

非常感谢

4

2 回答 2

3

只需autorelease在自动释放池范围内调用,就会自动将对象添加到池中。不过,看起来您正在尝试在这里解决错误的问题。如果你真的是说_updates,那么这不应该是方法的内存管理,而是调用者的内存管理(它已经是!JSONObjectWithData:options:error:已经返回一个自动释放的实例),如果你的意思是updates,那么,干脆不要保留它。

于 2013-05-07T23:30:12.103 回答
0

这不可能。我想你需要这个

- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection {
    @autoreleasepool {
        NSError *error = nil;
        id response = [NSJSONSerialization JSONObjectWithData:responseData options:nil error:&error];
        [responseData release];
        if (error) {
                NSLog(@"ERROR JSON PARSING : %@", error.localizedDescription);
        }

        [delegate databaseUpdates:response connection:self];
    } // response will be released here
}
于 2013-05-07T23:27:31.510 回答