Facebook に接続する Xcode 4.6 のアプリケーションがあります。アプリケーションがバックグラウンドに移行してフォアグラウンドに戻るときに、アプリケーションのさまざまなポイントで時折クラッシュが発生することがよくあります。一貫性がなく、クラッシュの分析が困難だったので、計測器を使用してメモリ リークを特定しようとしました。私は iOS にまったく慣れていないので、メモリ リークが発生していることを突き止めることができました。また、どのメソッドがそれらを引き起こしているかを確認することもできましたが、「さてどうしたものか」と考えていることに気づきました。つまり、どこに問題があるかはわかりますが、それを特定することはできません。例を強調すれば、誰かが光を当てることができることを願っています。
**これが私が楽器で見ているものです:
リスト内の最初のリークされたオブジェクトを見るだけです:
漏洩したオブジェクト = 「FB セッション」
責任あるフレーム =
+[FBSession openActiveSessionWithPermissions:allowLoginUI:allowSystemAccount:isRead:defaultAudience:completionHandler:]
これは、このメソッド内にリークされたオブジェクトが存在することを意味すると解釈します。あれは正しいですか?実装されたメソッドは私の App Delegate に存在し、次のようになります。
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_about_me",
@"read_friendlists",
nil];
//IMPLEMENTED METHOD
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];
}
この時点で、何をする必要があるのか 、またはこの方法がリークを引き起こしている可能性があるのか わかりません。私はメモリリークのチュートリアルを調べましたが、問題を特定するところまでしかたどり着けませんでしたが、解決方法を理解するには至りませんでした。どんな助けでも大歓迎です。