我在尝试使用 facebook-ios-sdk 修复内存泄漏时遇到了这个问题。将对象从没有弧编译的类传递到启用弧的类时,我该如何处理这种情况?
这是非弧编译 Facebook 库中的代码:(我删除了与问题无关的不必要的东西)如您所见,结果对象没有自动释放或释放。
- (void)handleResponseData:(NSData *)data {
NSError* error = nil;
id result = [self parseJsonResponse:data error:&error];
self.error = error;
// Call the defined delegate wich is my AppDelegate didLoad method wich is arc enabled
[_delegate request:self didLoad:result];
}
- (id)parseJsonResponse:(NSData *)data error:(NSError **)error {
SBJSON *jsonParser = [[SBJSON alloc] init];
//gets the object wich leaks or gets overreleased
id result = [jsonParser objectWithString:responseString];
[jsonParser release];
return result;
}
现在,如果我尝试将 autorelease 添加到结果对象,当我的 AppDelegate 中的 arc 代码尝试释放对象时,我将面临 NSZombie。但是,如果我留下这样的代码,我将面临内存泄漏,结果对象没有被释放。
我错过了一些基本的东西吗?我无法理解这个?
感谢您的任何建议!克里斯