Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2010年02月01日

アプリが落ちないUIWebViewの使い方



UIWebViewは、他のViewと使い方がちょっと違う。

普通にViewを終了するときに、UIWebViewをreleaceするだけではアプリが落ちることがある。(特にメモリ量が少ないiPhone3Gの場合)

これに対処するコード。

deallocメソッドなどでUIWebViewをreleaceする前に、
webView.delegate = nil;
を追加する。



hogeController.h
@interface hogeController : UIViewController {

IBOutlet UIWebView *webView;

}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@end


hogeController.m
#define kTopMargin 20.0

- (void)viewDidLoad {

CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
webFrame.origin.y += kTopMargin + 5.0; // leave from the URL input field and its label
webFrame.size.height -= 40.0;
self.webView = [[[UIWebView alloc] initWithFrame:webFrame] autorelease];
self.webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

self.webView.opaque = NO; // お好みに応じて
self.webView.backgroundColor = [UIColor clearColor]; // お好みに応じて
self.webView.scalesPageToFit = YES; // お好みに応じて

self.webView.delegate = self;
[self.view addSubview:self.webView];

[self.webView loadRequest:request];

}

- (void)viewDidUnload {

[super viewDidUnload];
self.webView = nil;

}


- (void)dealloc
{

webView.delegate = nil;
[webView release];

[super dealloc];

}


- (void)viewWillAppear:(BOOL)animated
{
self.webView.delegate = self; // setup the delegate as the web view is shown
}

- (void)viewWillDisappear:(BOOL)animated
{
[self.webView stopLoading]; // in case the web view is still loading its content
self.webView.delegate = nil; // disconnect the delegate as the webview is hidden
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}



詳細コードはAppleのサンプルソースUICatalogを参考にすること。
 


タグ:iPhone
posted by mobileDeveloper at 21:13 | Comment(0) | TrackBack(0) | UIWebView はてなブックマーク - アプリが落ちないUIWebViewの使い方 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。