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