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;
}
結果オブジェクトに自動リリースを追加しようとすると、AppDelegateのアークコードがオブジェクトをリリースしようとしたときにNSZombieに直面しています。ただし、このようなコードを残すと、結果オブジェクトが解放されないときにメモリリークが発生します。
私は何か基本的なものが欠けていますか?私はこれに頭を悩ませることができませんか?
アドバイスありがとうございます!クリス