<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Natural

     

    UITableView滾動(dòng)時(shí)crash

    照著網(wǎng)上的教程,吭哧吭哧寫(xiě)好了一個(gè)tableView,Run起來(lái),界面出現(xiàn)了。還來(lái)不及高興一下,一滾動(dòng),坑爹啊,直接crash掉了,退出。

    打開(kāi)調(diào)試模式,再重現(xiàn)一次,Debugger Console顯示的結(jié)果是“Program received signal: "EXC_BAD_ACCESS"”.
    這個(gè)結(jié)果表示代碼中有數(shù)組越界或者哪里內(nèi)存泄漏了。(網(wǎng)上教程不靠譜啊,完全照著教程敲代碼竟然都錯(cuò)了)

    還好總共沒(méi)幾個(gè)方法,多加幾個(gè)斷點(diǎn)調(diào)試一下。
    問(wèn)題出來(lái)了:當(dāng)向下滾動(dòng),調(diào)用cellForRowAtIndexPath消息時(shí),執(zhí)行到第25行代碼tableData已經(jīng)被回收了。

    問(wèn)題分析:
    數(shù)組初始化放在viewDidLoad消息中,照著教程敲使用arrayWithObjects來(lái)創(chuàng)建。從語(yǔ)法上講,此方法是autorelease的,不需要我們手動(dòng)去release。
    然而問(wèn)題也出在這,當(dāng)向下滾動(dòng)時(shí),不知為何在viewDidLoad初始化的數(shù)組都已經(jīng)被回收了。

    修正方案:
    把viewDidLoad消息中數(shù)組創(chuàng)建方法都改為[[NSArray alloc] initWithObject: ……];方式創(chuàng)建,再在dealloc中釋放掉就OK了。

    推斷總結(jié):
    此代碼的界面是用IB拉出來(lái)的,對(duì)于新人來(lái)說(shuō)我們并不清楚它的view的創(chuàng)建細(xì)節(jié)。從執(zhí)行效果來(lái)看,它在創(chuàng)建view時(shí)嵌套了個(gè)NSAutoreleasePool,向下滾動(dòng)時(shí)已經(jīng)把pool給release掉了,所以出現(xiàn)crash。

    得到教訓(xùn)就是:使用IB創(chuàng)建界面時(shí),那些自定義的對(duì)象盡量使用alloc/retain/copy方式創(chuàng)建,自己release。把內(nèi)存管理寄托在自動(dòng)釋放池中是不靠譜的,除非這個(gè)池是你自己創(chuàng)建并釋放的。


    源代碼如下
     1 
     2 - (void)viewDidLoad {
     3     [super viewDidLoad];    
     4     tableData = [NSArray  arrayWithObjects:@"香辣醬香骨",@"肉末燒豆腐",@"芙蓉蝦",@"紅燒帶魚(yú)",
     5                  @"粉蒸排骨",@"自來(lái)紅月餅",@"蛋黃蓮蓉月餅",@"南瓜奶酪蛋糕",
     6                  @"南瓜沙拉",@"五香毛豆",@"奶油冰淇淋",@"焦糖南瓜冰淇淋",nil];
     7     thumbnails =[NSArray arrayWithObjects:@"a.jpg",@"b.jpg",@"c.jpg",@"d.jpg",@"e.jpg",@"f.jpg",
     8                   @"g.jpg",@"h.jpg",@"i.jpg",@"j.jpg",@"k.jpg",@"l.jpg",nil];
     9     prepTime = [NSArray arrayWithObjects:@"10 min",@"5 min",@"5 min",@"10 min",@"8 min",@"30 min",
    10                   @"30 min",@"45 min",@"20 min",@"5 min",@"50 min",@"40 min",nil];
    11 }
    12 
    13 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    14     return [tableData count];
    15 }
    16 
    17 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    18     static NSString *simpleTableIdentifier = @"SimpleTableItem";
    19     SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
    20     if(cell == nil){
    21         NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
    22         cell = [nib objectAtIndex:0];
    23     }
    24     NSUInteger row = [indexPath row];
    25     cell.nameLabel.text = [tableData     objectAtIndex:row];
    26     cell.thumbnailImageView.image = [UIImage imageNamed:[thumbnails objectAtIndex:row]];
    27     cell.prepTimeLabel.text = [prepTime objectAtIndex:row];
    28     return cell;
    29 }
    30 
    31 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    32     return 78;
    33 }
    34 
    35 - (void)dealloc {
    36     [super dealloc];
    37 }

    posted on 2012-09-07 11:33 此號(hào)已被刪 閱讀(1014) 評(píng)論(0)  編輯  收藏 所屬分類: Objective-C


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(8)

    隨筆分類(83)

    隨筆檔案(78)

    文章檔案(2)

    相冊(cè)

    收藏夾(7)

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲福利精品电影在线观看| 国产h肉在线视频免费观看| 蜜臀91精品国产免费观看 | 99re在线免费视频| 亚洲精品中文字幕无码蜜桃| 一级毛片a免费播放王色| 亚洲国产一区二区三区| 成人a毛片视频免费看| 久久久青草青青国产亚洲免观| 特黄特色的大片观看免费视频| 亚洲国产a级视频| 中国一级特黄高清免费的大片中国一级黄色片| 免费一级黄色毛片| 国产成人无码精品久久久免费 | 国产国产人免费人成免费视频| 亚洲男人的天堂网站| 国产gav成人免费播放视频| 免费观看四虎精品成人| 亚洲桃色AV无码| 8x8×在线永久免费视频| 亚洲av无码一区二区三区天堂古代 | 免费乱理伦在线播放| 无码日韩人妻AV一区免费l| 亚洲va久久久噜噜噜久久| 91香蕉国产线观看免费全集| 亚洲国产成人久久精品app| 日韩视频在线免费观看| fc2免费人成为视频| 亚洲综合男人的天堂色婷婷| 成人免费午间影院在线观看| 一级日本高清视频免费观看| 亚洲一区二区中文| 好爽又高潮了毛片免费下载| 成年网站免费入口在线观看| 亚洲综合久久成人69| 日本高清免费不卡视频| a级毛片视频免费观看| 亚洲国产综合精品中文第一| 亚洲一级特黄大片无码毛片 | 亚洲精品97久久中文字幕无码| 免费无码又爽又刺激一高潮|