現在、ユーザーが Facebook にログインし、そのデータを webService に渡してゲームにログインする必要がある Iphone アプリを開発しています。基本的に、私のゲームは HTML で実行され、アプリで UIWebView によって表示されます。
これがwebViewをロードするための私のコードです:
-(void)callWebView {
self.webView.delegate = self;
NSURL *url = [NSURL URLWithString:@"http://www.my_game_url"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestURL];
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = request.URL;
NSString *urlString = url.absoluteString;
if ( [ urlString isEqualToString: @"http://my_game_logout_url" ] ) {
[myWebView stopLoading];
[self.webView removeFromSuperview];
MyAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.session closeAndClearTokenInformation];
[FBSession.activeSession close];
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) {
[storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];
return NO;
}
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[self.webView stopLoading];
MyAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.session closeAndClearTokenInformation];
[FBSession.activeSession close];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
webView.delegate = nil;
[webView stopLoading];
}
- (void)dealloc {
[webView setDelegate:nil];
}
UIWebView でゲームを実行しても問題ありません。問題は、後でメモリ警告が表示され、アプリがクラッシュすることです。自動参照カウント (ARC) を有効にして不要なソースを自動的に解放する必要がありますが、それでもアプリでメモリ警告が表示されます。私が間違って実装しているものはありますか?ありがとう。