? ? ? ?1、應用程序委托對象?
? ? ? ?在應用程序委托對象中接收內存警告消息,需要重寫applicationDidReceiveMemoryWarning:,方法如下:
? ? ? ?- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application?
? ? ? ?{ ? ??
? ? ? ?NSLog(@"AppDelegate中調用applicationDidReceiveMemoryWarning:");?
? ? ? ?}?
? ? ? ?2、視圖控制器
? ? ? ?在視圖控制器中接收內存警告消息,需要重寫didReceiveMemoryWarning方法,具體方法如下:
? ? ? ?- (void)didReceiveMemoryWarning?
? ? ? ?{ ? ??
? ? ? ?NSLog(@"ViewController中didReceiveMemoryWarning調用"); ? ??
? ? ? ?[super didReceiveMemoryWarning]; ? ??
? ? ? ?//釋放成員變量 ? ??
? ? ? ?[_listTeams release];?
? ? ? ?}?
? ? ? ?注意,釋放資源代碼應該放在[super didReceiveMemoryWarning]語句后面。?
? ? ? ?3、其他類?
? ? ? ?在其他類中可以使用通知。在發生內存警告時,iOS系統會發出UIApplicationDidReceiveMemoryWarning- Notification通知,凡是在通知中心注冊了該通知的類都會接收到內存警告通知,具體方法如下:?
? ? ? ?- (void)viewDidLoad?
? ? ? ?{ ? ??
? ? ? ?[super viewDidLoad]; ?
? ??
? ? ? ?NSBundle *bundle = [NSBundle mainBundle]; ? ??
? ? ? ?NSString *plistPath = [bundle pathForResource:@"team" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?ofType:@"plist"]; ? ??
? ? ? ?//獲取屬性列表文件中的全部數據 ? ??
? ? ? ?NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath]; ? ??
? ? ? ?self.listTeams = array; ? ??
? ? ? ?[array release]; ?? ??
? ? ? ?//接收內存警告通知,調用handleMemoryWarning方法處理 ? ??
? ? ? ?NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; ? ??
? ? ? ?[center addObserver:self ? ? ? ? ? ? ? ?
? ? ? ?selector:@selector(handleMemoryWarning) ? ? ? ? ? ? ? ? ? ?
? ? ? ?name:UIApplicationDidReceiveMemoryWarningNotification ? ? ? ? ? ? ? ? ?
? ? ? ?object:nil]; ?? ? ? ?}?
? ? ? ?//處理內存警告?
? ? ? ?-(void) handleMemoryWarning?
? ? ? ?{ ? ??
? ? ? ?NSLog(@"ViewController中handleMemoryWarning調用");?
? ? ? ?}?
? ? ? ?在上述代碼中,我們在viewDidLoad方法中注冊UIApplicationDidReceiveMemoryWarningNotification消息,接收到報警信息后調用handleMemoryWarning方法。這些代碼完全可以寫在其他類中,直接在ViewController中重寫 didReceiveMemoryWarning方法就可以了。
? ? ? ?在此,南昌APP開發公司小編要提醒大家的是,內存警告在設備上并不經常出現,一般我們沒有辦法模擬,但模擬器上有一個功能可以模擬內存警告。啟動模擬器,選擇“硬件”→“模擬內存警告”模擬器菜單,這時我們會在輸出窗口中看到內存警告發生了,具體如下所示:?
? ? ? ?2017-11-07 15:58:51.032 MemoryLeakSample[1396:41574] Received memory warning.?
? ? ? ?2017-11-07 15:58:51.033 MemoryLeakSample[1396:41574] AppDelegate中調用applicationDidReceiveMemoryWarning:?
? ? ? ?2017-11-07 15:58:51.034 MemoryLeakSample[1396:41574] ViewController中handleMemoryWarning調用?
? ? ? ?2017-11-07 15:58:51.034 MemoryLeakSample[1396:41574] ViewController中didReceiveMemoryWarning調用
? ? ? ?以上便是小編為大家介紹的關于在ios中獲得內存警告的幾個途徑,這樣用戶體驗就更好了。百恒網絡專注于APP開發、小程序開發等服務,十多年豐富經驗,如有需要,我們隨時為您效勞!