iOS開發入門:效能最佳化–記憶體泄露問題的解決

來源:互聯網
上載者:User

記憶體流失問題的解決

記憶體流失(Memory Leaks)是當一個對象或變數在使用完成後沒有釋放掉,這個對象一直佔有著這塊記憶體,直到應用停止。如果這種對象過多記憶體就會耗盡,其它的應用就無法運行。這個問題在C++、C和Objective-C的MRR中是比較普遍的問題。

在Objective-C中釋放對象的記憶體是發送release和autorelease訊息,它們都是可以將引用計數減1,當為引用計數為0時候,release訊息會使對象立刻釋放,autorelease訊息會使對象放入記憶體釋放池中延遲釋放。

上代碼:

- (void)viewDidLoad      {      [super viewDidLoad];      NSBundle *bundle = [NSBundle mainBundle];      NSString *plistPath = [bundle pathForResource:@"team"     ofType:@"plist"];      //擷取屬性列表檔案中的全部資料      self.listTeams = [[NSArray alloc] initWithContentsOfFile:plistPath];      }      - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath      {      static NSString *CellIdentifier = @”CellIdentifier”;      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];      if (cell == nil) {      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];      }      NSUInteger row = [indexPath row];      NSDictionary *rowDict = [self.listTeams objectAtIndex:row];      cell.textLabel.text =  [rowDict objectForKey:@"name"];      NSString *imagePath = [rowDict objectForKey:@"image"];      imagePath = [imagePath stringByAppendingString:@".png"];      cell.imageView.image = [UIImage imageNamed:imagePath];      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;      return cell;      }      - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath      {      NSUInteger row = [indexPath row];      NSDictionary *rowDict = [self.listTeams objectAtIndex:row];      NSString *rowValue  =  [rowDict objectForKey:@"name"];      NSString *message = [[NSString alloc] initWithFormat:@”您選擇了%@隊。”, rowValue];      UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@”請選擇球隊”      message:message      delegate:self      cancelButtonTitle:@”Ok”      otherButtonTitles:nil];      [alert show];      [tableView deselectRowAtIndexPath:indexPath animated:YES];      }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.