Instruments (Leaks)在使用TWRequest时报告内存泄漏,我看不出自己做错了什么。
以下是重现该问题的步骤:
创建一个新的Xcode项目(禁用ARC),添加Twitter Framework,然后在代码中添加以下代码行(例如在viewDidLoad中):
TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET];
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"in performrequest");
[postRequest release];
}]; 在使用工具(泄漏)分析此代码后,它告诉我带有"performRequestWithHandler“的行正在泄漏:


有什么办法来防止这种泄漏吗?
我发现了一个类似的问题here,但它似乎与我描述的问题无关。
发布于 2011-12-30 03:31:49
我不确定为什么instruments会将其视为泄漏,但您可以在完成块之外释放该请求。一旦请求被发起,它就会被连接保留,直到完成块被执行。将您的代码更改为:
TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET];
[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSLog(@"in performrequest");
}];
[postRequest release];如果这也消除了泄漏,我也不会感到惊讶。
https://stackoverflow.com/questions/8317607
复制相似问题