0

新しい iOS 6 で困っています。以前は「viewDidUnload」を理解していました。これは現在減価償却されており、ネットワーク アクティビティ インジケーターの終了に問題があることは理解しています。以下は私のコードです。よろしくお願いします。

#import "MapViewController.h"

@implementation MapViewController

@synthesize webview, url, activityindicator, searchbar;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        // Custom initialization.
    }
    return self;
}

- (void)viewDidLoad 
{
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    webview.delegate = self;
    activityindicator.hidden = TRUE;
    [webview performSelectorOnMainThread:@selector(loadRequest:) withObject:requestObj waitUntilDone:NO];
    [super viewDidLoad];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    activityindicator.hidden = TRUE;  
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    [activityindicator stopAnimating];  
    NSLog(@"Web View started loading...");
}

- (void)webViewDidStartLoad:(UIWebView *)webView {     
    activityindicator.hidden = FALSE;
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    [activityindicator startAnimating];     
    NSLog(@"Web View Did finish loading");
}

- (void)didReceiveMemoryWarning {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];

        // Release any cached data, images, etc. that aren't in use.
}

- (void)viewDidUnload {
    webview = nil;
    activityindicator = nil;
    searchbar = nil;
    [super viewDidUnload];
}

- (void)dealloc {
    [url release];
    [super dealloc];
}

@end
4

1 に答える 1

2

あなたは何のためにあるのか誤解していると思いますviewDidUnload。あなたのコードは、 でアクティビティ スピナーを非表示にすることとは何の関係もありませんviewDidUnload

- (void)viewDidUnload
{
  webview = nil;
  activityindicator = nil;
  searchbar = nil;
  [super viewDidUnload];
}

viewDidUnloadメモリ不足の場合にシステムが UIViewController の非アクティブなビューをパージしたときに、保持された交換可能なオブジェクトをクリーンアップすることのみを目的としていました。

iOS 6 では、viewDidUnload が呼び出されることはありません。これは、システムがメモリ不足の状況で UIViewController のビューをパージしなくなるためですdidReceiveMemoryWarning。コールバックでも必要な場合は、それを行う必要があります。

- (void)didReceiveMemoryWarning
{
  [super didReceiveMemoryWarning];
  if ([self isViewLoaded] && self.view.window == nil)
  {
    self.view = nil;
    [self viewDidUnload];
   }
}
于 2012-10-01T21:54:20.120 に答える